小编Łuk*_*Lew的帖子

如何用C++ 11和C++ 14实现动态函数调用?

这是代码,我希望解释我想要实现的目标.

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中简化解决方案吗?

c++ templates variadic-templates c++11 c++14

7
推荐指数
1
解决办法
1064
查看次数

如何在Ubuntu上安装g ++ 4.4?

有一个Debian g ++ - 4.4包,但它不是Ubuntu.网络上有太多系统破坏的恐怖故事.

如何在Ubuntu上安装g ++ 4.4?

ubuntu g++

6
推荐指数
2
解决办法
4万
查看次数

有没有办法在for循环初始化器中定义两种不同类型的变量?

您可以在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)

c++ scope for-loop initializer variable-declaration

6
推荐指数
7
解决办法
2824
查看次数

如何正确阅读一行?

我有一个Linux文件描述符(来自socket),我想读一行.如何在C++中做到这一点?

c++ sockets file-descriptor

6
推荐指数
1
解决办法
9821
查看次数

Scala中可变集合的迭代器?

刚刚发现Java中有这样的迭代器.
Scala是否具有带有'set'和'remove'方法的迭代器,用于迭代(和修改)像array这样的可变集合?
如果没有这样的迭代器,那么有充分的理由吗?

iterator scala scala-2.8

6
推荐指数
1
解决办法
2355
查看次数


您对一群本科生的优秀​​AI项目有什么想法?

有两个课程:"AI"和"游戏中的AI",15名学生共15周.我想让他们充满动力和创造力.我知道我想要某种竞争(后一种课程显而易见).也许像Marathon Match或ICFP这样的东西.我需要良好的可视化,所以如果它已经存在就会很棒.一个想法是为"韦诺之战"编写AI,但我想这是多样化/无聊的.Go的另一场比赛.但那太难了.

你有什么想法?

它将由3名学生组成,为期15周.

artificial-intelligence

5
推荐指数
1
解决办法
3747
查看次数

我可以用g ++控制寄存器分配吗?

我有一个高度优化的C++片段,即使在远离热点的地方进行微小的改动也可以达到20%的性能.经过深入调查后发现,热点中使用的寄存器(可能)略有不同.我可以使用always_inline属性控制内联,但是我可以控制寄存器分配吗?

optimization gcc g++ inline cpu-registers

5
推荐指数
1
解决办法
3499
查看次数

是否可以在C++中创建方法调用调度程序?

考虑以下代码:

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*指针:)

c++ methods types pointers dispatcher

5
推荐指数
1
解决办法
450
查看次数

如何制作跨平台的 C++ 内联汇编语言?

我破解了以下代码:

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++ 的正确宏是什么?

c++ assembly cross-platform

5
推荐指数
2
解决办法
3131
查看次数