我正在使用C++,我需要知道标量值(例如a double)是否"已定义".如果需要,我还需要能够"取消"它:
class Foo {
public:
double get_bar();
private:
double bar;
void calculate_bar() {
bar = something();
}
};
double Foo::get_bar() {
if ( undefined(bar) )
calculate_bar();
return bar;
}
Run Code Online (Sandbox Code Playgroud)
在C++中有可能吗?
谢谢
因为我在大学的第一年,我总是羡慕我的同伴(主要是来自科技导向的专业学校),因为我知道C.我来自一个以自然科学为导向的学院,从来没有编程经验或课程,但是有些夏天使用PHP学习从7个小时的自学PHP教程(我的编程兴趣是最近的).我想知道......这是一种合法的嫉妒吗?有没有程序员必须知道C?C是否提供了对系统如何工作或如何进行编程的深入理解?我知道在编程C时你必须对缓冲区,内存等有很深的理解.所以我希望你的意见.
可能重复:
定义实现+运算符的泛型
我最近在研究一个实现算法的C#类库.关键是我希望库的用户能够选择算法应该使用的机器精度(单或双),并且我正在尝试使用泛型.所以,例如:
Algorithm<double> a = new Algorithm<double>();
/** Some initializations here */
double result = a.Solve();
Run Code Online (Sandbox Code Playgroud)
要么
Algorithm<float> a = new Algorithm<float>();
/** Some initializations here */
float result = a.Solve();
Run Code Online (Sandbox Code Playgroud)
因此,泛型类的类型参数意味着是十进制数(因为在算法代码中我需要使用+,*,/, - ),但我不知道对它施加哪种类型约束.我已经考虑过与所有运营商建立接口,但不幸的是,这是不允许的.有任何想法吗?
否则,是否有可能在C#中获得类似于C++中的模板特化的东西?
谢谢
托马索
作为一名新手C++程序员,我总是将我的类接口放在.h文件中并在.cpp文件中实现.但是我最近尝试了C#一段时间,我真的很喜欢它的清晰语法和组织文件的方式,特别是在标题和实现之间没有任何关系,你通常为每个.cs文件实现一个类,而你不需要标题.
我知道在C++中这也是可能的(你可以在.h文件中编写"内联"函数),但到目前为止,我总是看到C++项目中的文件.h和.cpp文件之间有明显的区别.这种方法有哪些优缺点?
谢谢
所以我有这个Java项目由几个类,一些外部JAR文件和一个可执行的Java程序组成.我想将整个代码和外部JARS导出到外部目录,并生成一个Makefile来构建包含所有依赖项的程序.有自动化的方法吗?
谢谢
Tunnuz
我打算使用神经网络逼近强化学习算法中的值函数.我想这样做是为了介绍我如何表示状态和行为的一些概括和灵活性.
现在,我认为神经网络是正确的工具,但是由于我不是AI专家,因此我的可见度有限.特别是,现在似乎神经网络正在被其他技术所取代,例如支持向量机,但我不确定这是时尚问题,还是神经网络中存在一些真正的限制可能会影响我的方法.你有什么建议吗?
谢谢,
Tunnuz
例如,假设我想建立一个直方图,我会这样:
hist = {}
for entry in data:
if entry["location"] in hist:
hist[entry["location"]] += 1
else:
hist[entry["location"]] = 1
Run Code Online (Sandbox Code Playgroud)
有没有办法避免存在检查,并根据其存在初始化或更新密钥?
我是神经网络的新手,为了掌握这个问题,我实现了一个基本的前馈MLP,我目前通过反向传播进行训练.我知道有更复杂和更好的方法可以做到这一点,但在机器学习简介中,他们建议用一两个技巧,基本的梯度下降可以有效地从现实世界数据中学习.其中一个技巧是自适应学习率.
该想法是当误差变小时将学习速率增加恒定值a,并且当误差变大时将学习速率减小学习速率的分数b.所以基本上学习率的变化取决于:
+(a)
Run Code Online (Sandbox Code Playgroud)
如果我们正朝着正确的方向学习,那么
-(b * <learning rate>)
Run Code Online (Sandbox Code Playgroud)
如果我们破坏了我们的学习 但是,在上面的书中,没有关于如何设置这些参数的建议.我不希望得到一个精确的建议,因为参数调整本身就是一个完整的主题,但至少只是暗示了它们的数量级.有任何想法吗?
谢谢你,
Tunnuz
抱歉这个令人费解的问题,但基本上这个想法非常简单.我有一个可变的类模板:
template<class P1, class P2, class ... P3s>
class A
{
...
};
Run Code Online (Sandbox Code Playgroud)
我想有一个A类生成器,它接受一个整数模板参数N并实例化一个带有N个P3参数的A类.喜欢:
template<class P1, class P2, class P3, int N>
class GenA : /* somehow */ : public A<P1, P2, /* N times */ P3, P3, ...>
{
...
};
Run Code Online (Sandbox Code Playgroud)
所以用法是:
// Generates A<Class1, Class2, Class3, Class3, Class3>
GenA<Class1, Class2, Class3, 3> a;
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用编译时递归和部分特化
template <class P1, class P2, int N, class P3>
class GenA : public GenA<P1, P2, N-1, P3, P3>
{
...
}
template <class P1, …Run Code Online (Sandbox Code Playgroud) 我正在研究C++ 11中的一个小型数学优化框架,我想知道用户提供特定于域的逻辑的最佳方式是什么.我可以强迫她使用可以被框架调用的钩子方法来定义类,但是我想保持它的精益,并且尽可能地利用新的C++ 11工具.所以我正在考虑接受std::function可能从lambda表达式实例化的对象作为参数,并在需要时调用它们.我唯一想到的是编译器(在我的情况下是gcc,但我想知道Xcode和Visual C++)是否能够获取std :: function对象并内联函数定义,以便它们与其余代码一起进行优化.
PS:从评论中看,我的问题的第一个版本看起来对大多数用户来说都很模糊,可能是我使用不正确语言的错误.所以我重写了它,我希望有人能够理解我在这里传达的概念(并且可能建议一个解决方案).
PPS:有人建议使用模板,这是我想到的一个想法,但我想知道是否有替代品.我没有任何反对模板的东西,但我计划在这个版本工作时立即创建一个基于模板的版本,因为我发现在动态对象方面更容易推理.
c++ compiler-construction lambda compiler-optimization c++11