相关疑难解决方法(0)

c ++ 11的序列拉链功能?

使用新的基于范围的for循环,我们可以编写类似的代码

for(auto x: Y) {}
Run Code Online (Sandbox Code Playgroud)

哪个IMO是一个巨大的进步(例如)

for(std::vector<int>::iterator x=Y.begin(); x!=Y.end(); ++x) {}
Run Code Online (Sandbox Code Playgroud)

可以用它来循环两个同时循环,比如Pythons zip函数吗?对于那些不熟悉Python的人,代码如下:

Y1 = [1,2,3]
Y2 = [4,5,6,7]
for x1,x2 in zip(Y1,Y2):
    print x1,x2
Run Code Online (Sandbox Code Playgroud)

作为输出 (1,4) (2,5) (3,6)

c++ sequences c++11

87
推荐指数
11
解决办法
4万
查看次数

Variadic递归预处理器宏 - 它可能吗?

我遇到了一些理论问题.在一段代码中,我维护着一组宏

#define MAX_OF_2(a, b)       (a) > (b) ? (a) : (b)
#define MAX_OF_3(a, b, c)    MAX_OF_2(MAX_OF_2(a, b), c)
#define MAX_OF_4(a, b, c, d) MAX_OF_2(MAX_OF_3(a, b, c), d)
...etc up to MAX_OF_8
Run Code Online (Sandbox Code Playgroud)

我想做的是用这样的东西替换它们:

/* Base case #1, single input */
#define MAX_OF_N(x)      (x)

/* Base case #2, two inputs */
#define MAX_OF_N(x, y)   (x) > (y) ? (x) : (y)

/* Recursive definition, arbitrary number of inputs */
#define MAX_OF_N(x, ...) MAX_OF_N(x, MAX_OF_N(__VA_ARGS__))
Run Code Online (Sandbox Code Playgroud)

...当然,这是无效的预处理器代码.

忽略这个特殊情况应该使用函数而不是预处理器宏来解决,是否可以定义一个可变的MAX_OF_N()宏?

为了清楚起见,最终结果应该是一个宏,它接受任意数量的参数并评估其中最大的参数.我有一种奇怪的感觉,这应该是可能的,但我没有看到如何.

macros c-preprocessor

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

标签 统计

c++ ×1

c++11 ×1

c-preprocessor ×1

macros ×1

sequences ×1