嵌套循环展开
Nested loop unrolling
给定我有一个函数
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] );
}
};
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 了解嵌套循环打印星号图案
- 嵌套for循环C++的问题(初学者)
- 嵌套While循环不起作用(C++问题)
- 无法掌握嵌套循环的写作技巧
- 嵌套的 for 循环不循环通过第二个数组
- 在 c++ 中实现嵌套循环的更短方法吗?
- 将 for 循环与嵌套的 while 循环并行化时出现 OpenMP 分段错误
- 使用嵌套的 for 循环比嵌套的 while 循环更好吗?
- 在循环访问嵌套向量时删除元素
- 循环时嵌套有任何问题
- 循环时嵌套的麻烦
- 在While循环中嵌套if语句
- C++我可以用1个循环替换嵌套的For循环吗
- 基于循环的嵌套范围
- 嵌套循环展开
- 我无法为数组的元素赋值(使用:for 循环和嵌套的 if 语句)
- 从内部到外部展开嵌套宏
- 使用元编程展开嵌套循环