用于将向量列表从vec[0]返回到vec[n-1]的C预处理器宏

我想这样实现

#定义XX???
...
标准::向量<int>vec;
Func(XX(vec))--&燃气轮机;Func(vec[0],vec[1],…vec[n-1]);

我不知道怎么做

如果你能帮助我,非常感谢

你的

Func(向量[0],向量[1],…向量[n-1])

有一个简单的问题:如果n编译时不知道,那么编译器应该生成多少个vec[i],?从理论上讲,我们可以考虑运行时编译或预生成所有可能性,然后在运行时对其进行调度,但这既疯狂又毫无用处

因此,如果事先不知道n,请以常规方式处理vec[i]s:

constepr auto Func(自动和范围){for(自动和元素:范围)/*work*/}
int main(){Func(std::vector{1,2,3});}

但是,如果n是一个编译时常量,您可以很容易地获得所需的内容,而且Func甚至可以在STL中为您编写:

intmain(){apply([](自动&…元素){/*work*/},std::array{1,2,3});}

和,是的,请尽量远离定义< :它们对代码>命名空间、 CONTXPRP和其他基本C++特性一无所知。相反,请考虑粘贴模板——例如,如何实现代码> STD::Apple 。

发表评论