gpt4 book ai didi

c++ - 嵌套循环展开

转载 作者:行者123 更新时间:2023-11-30 05:35:38 25 4
gpt4 key购买 nike

假设我有一个函数

double doSomething(int const a, int const b, int const c) { /*...*/}

我想针对不同的输入 a、b 和 c 测试此函数。然后,我可以给出一个包含可能参数的列表,并用三个循环测试所有组合:

int aTest[] = {1,2,3,4}
int bTest[] = {-5,-3,0}
int cTest[] = {2,65,8,0,-100}
for (unsigned int i = 0; i < 4; ++i) {
for (unsigned int j = 0; j < 3; ++j) {
for (unsinged int k = 0; k < 5; ++k) {
double val = doSomething(aTest[i], bTest[j], cTest[k]);
//Compare results etc.
}
}
}

希望编译器足够聪明,能够在编译时展开这些循环,从而生成如下内容:

doSomething(1,-5,2);
doSomething(1,-5,65);
doSomething(1,-5,8);
//...

但是,鉴于我的编译器不够智能,无法展开,我该如何处理模板?

最佳答案

你可以尝试做这样的事情:

double TestData[] = { 1.5, 2.7, 3.6, 4.5, 7.9 };

template<int K>
class Super {
public:
inline static void Do()
{
Super<K - 1>::Do();
double val = doSomething( TestData[K] );
}
};

template<>
class Super<0> {
public:
inline static void Do()
{
double val = doSomething( TestData[0] );
}
};

关于c++ - 嵌套循环展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33854238/

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