这是代码,我希望解释我想要实现的目标.
vector<int> ints;
vector<double> doubles;
struct Arg {
enum Type {
Int,
Double
};
Type type;
int index;
};
template <typename F>
void Call(const F& f, const vector<Arg>& args) {
// TODO:
// - First assert that count and types or arguments of <f> agree with <args>.
// - Call "f(args)"
}
// Example:
void copy(int a, double& b) {
b = a;
}
int test() {
Call(copy, {{Int, 3}, {Double, 2}}); // copy(ints[3], double[2]);
}
Run Code Online (Sandbox Code Playgroud)
这可以在C++ 11中完成吗?
如果是,可以在C++ 14中简化解决方案吗?
有一个Debian g ++ - 4.4包,但它不是Ubuntu.网络上有太多系统破坏的恐怖故事.
如何在Ubuntu上安装g ++ 4.4?
您可以在for循环中定义2个相同类型的变量:
int main() {
for (int i = 0, j = 0; i < 10; i += 1, j = 2*i) {
cout << j << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
但是定义不同类型的变量是违法的:
int main() {
for (int i = 0, float j = 0.0; i < 10; i += 1, j = 2*i) {
cout << j << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?(我不需要i在循环内使用,只是j.)
如果你完全被黑客攻击并且模糊不清,那对我来说没问题.
在这个人为的例子中,我知道你可以使用double这两个变量.我正在寻找一般答案.
请不要建议移动body之外的任何变量,可能对我不可用,因为一个迭代器必须在循环之后消失并且for语句将被包含在我的foreach宏中:
#define foreach(var, iter, instr) { \
typeof(iter) var##IT = …Run Code Online (Sandbox Code Playgroud) 我有一个Linux文件描述符(来自socket),我想读一行.如何在C++中做到这一点?
我刚刚发现Java中有这样的迭代器.
Scala是否具有带有'set'和'remove'方法的迭代器,用于迭代(和修改)像array这样的可变集合?
如果没有这样的迭代器,那么有充分的理由吗?
有两个课程:"AI"和"游戏中的AI",15名学生共15周.我想让他们充满动力和创造力.我知道我想要某种竞争(后一种课程显而易见).也许像Marathon Match或ICFP这样的东西.我需要良好的可视化,所以如果它已经存在就会很棒.一个想法是为"韦诺之战"编写AI,但我想这是多样化/无聊的.Go的另一场比赛.但那太难了.
你有什么想法?
它将由3名学生组成,为期15周.
我有一个高度优化的C++片段,即使在远离热点的地方进行微小的改动也可以达到20%的性能.经过深入调查后发现,热点中使用的寄存器(可能)略有不同.我可以使用always_inline属性控制内联,但是我可以控制寄存器分配吗?
考虑以下代码:
struct X {
void MethodX() {
...
}
};
struct Y {
void MethodY() {
...
}
};
void test () {
X x;
Y y;
Dispatcher d;
d.Register("x", x, &X::MethodX);
d.Register("y", y, &Y::MethodY);
d.Call("x");
d.Call("y");
}
Run Code Online (Sandbox Code Playgroud)
问题是如何实现Dispatcher.我不介意X和Y可以继承某些东西,但是Dispatcher应该允许更多的客户端(不仅仅是X和Y).如果可能的话我想避免使用void*指针:)
我破解了以下代码:
unsigned long long get_cc_time () volatile {
uint64 ret;
__asm__ __volatile__("rdtsc" : "=A" (ret) : :);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
它适用于 g++,但不适用于 Visual Studio。我怎样才能移植它?检测 VS/g++ 的正确宏是什么?