我想知道如何获得这样的东西:
写
copy(a, b, 2, 3)
然后得到
a[2] = b[2]; a[3] = b[3]; a[4] = b[4];
我知道 C#defines 不能递归地使用来获得这种效果。但我使用的是 C++,所以我认为模板元编程可能是合适的。
我知道有一个 Boost库,但我只想要那个“简单”的技巧,而 Boost 太“杂乱”了。
最佳答案
对此最直接的解决方案是编写一个已知开始和结束值的循环:
for(int i = 2; i <= 4; i++) {
a[i]=b[i];
}
我认为这比任何类型的模板/运行时调用混合都要好:编写的循环对于编译器的优化器来说是完全清楚的,并且没有任何级别的函数调用可以挖掘,只是为了看看发生了什么。
关于c++ - 如何在 C++ 中展开一个短循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382137/