c++ - 如何在 C++ 中展开一个短循环

标签 c++ metaprogramming

我想知道如何获得这样的东西:

  1. copy(a, b, 2, 3)
    
  2. 然后得到

    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/

相关文章:

Ruby:将 block 传递给定义实例方法的类宏

c++ - c++ 允许提升还是特定于编译器?即使

c++ - 使用变量值初始化静态有哪些运行时成本?

c++ - 具有模板类型的模板化模板参数列表

Python 元编程 : automatically generate member functions

ruby - 在方法定义之外定义实例变量 (ruby)

c++ - SDL 在 OSX lion 上与终端/g++ 链接错误

c++ - 基于继承关系的模板友情

C++在数组中查找最大(按行)和最小(按列)元素

ruby - 如何向后运行 Ruby 函数?