gpt4 book ai didi

使用模板与内联的 C++ 元编程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:15 25 4
gpt4 key购买 nike

是否值得编写如下代码来复制数组元素:

#include <iostream>
using namespace std;


template<int START, int N>
struct Repeat {
static void copy (int * x, int * y) {
x[START+N-1] = y[START+N-1];
Repeat<START, N-1>::copy(x,y);
}
};

template<int START>
struct Repeat<START, 0> {
static void copy (int * x, int * y) {
x[START] = y[START];
}
};



int main () {


int a[10];
int b[10];

// initialize
for (int i=0; i<=9; i++) {
b[i] = 113 + i;
a[i] = 0;
}

// do the copy (starting at 2, 4 elements)
Repeat<2,4>::copy(a,b);

// show
for (int i=0; i<=9; i++) {
cout << a[i] << endl;
}

} // ()

还是使用内联函数更好?

第一个缺点是您不能在模板中使用变量。

最佳答案

这并没有更好。首先,这不是真正的编译时间,因为您在这里进行函数调用。如果幸运的话,编译器会将它们内联并以循环结尾,您本可以用更少的代码自行编写(或仅通过使用 std::copy)。

关于使用模板与内联的 C++ 元编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com