小编RAC*_*RAC的帖子

C++中的逻辑XOR运算符?

有这样的事吗?这是我第一次遇到它的实际需要,但我没有看到Stroustrup中列出的一个.我打算写:

// Detect when exactly one of A,B is equal to five.
return (A==5) ^^ (B==5);
Run Code Online (Sandbox Code Playgroud)

但是没有^^运营商.我可以在^这里使用bitwise 并得到正确的答案(无论机器表示真和假)?我从来没有拌&&&,或|||,所以我毫不犹豫地做到这一点与^^^.

我会更自在地编写自己的bool XOR(bool,bool)函数.

c++ operators logical-operators

274
推荐指数
9
解决办法
27万
查看次数

在C++中模板化'for'循环?

我在下面有一个带有运行时for循环的C++代码段,

for(int i = 0; i < I; i++)
  for (int j = 0; j < J; j++)
    A( row(i,j), column(i,j) ) = f(i,j);
Run Code Online (Sandbox Code Playgroud)

该片段被重复调用.循环边界'I'和'J'在编译时是已知的(I/J是2到10的顺序).我想以某种方式使用模板展开循环.主要的瓶颈是row()和column()以及f()函数.我想用使用row<i,j>::enum技巧在编译时评估的等效元程序替换它们.

我真正喜欢的是最终将循环解析为一系列语句的东西,例如:

A(12,37) = 0.5;
A(15,23) = 0.25;
A(14,45) = 0.25;
Run Code Online (Sandbox Code Playgroud)

但是我想这样做而不会破坏for- for结构太多.本着精神:

TEMPLATE_FOR<i,0,I>
  TEMPLATE_FOR<j,0,J>
     A( row<i,j>::value, column<i,j>::value ) = f<i,j>::value
Run Code Online (Sandbox Code Playgroud)

可以提升:: lambda(或其他东西)帮我创建吗?

c++ optimization templates metaprogramming

23
推荐指数
4
解决办法
1万
查看次数