我有一个嵌套的 for 循环结构,现在我在每次迭代开始时重新声明向量:
void function (n1,n2,bound,etc){
for (int i=0; i<bound; i++){
vector< vector<long long> > vec(n1, vector<long long>(n2));
//about three more for-loops here
}
}
这使我可以“重新开始”每次迭代,这非常有效,因为我的内部操作主要采用 vec[a][b] += some value 的形式。但我担心大 n1 或大 n2 会很慢。我不知道向量/数组/等的底层架构,所以我不确定处理这种情况的最快方法是什么。我应该改用数组吗?我应该以不同的方式清除它吗?我应该完全不同地处理逻辑吗?
编辑:向量的大小在技术上不会改变每次迭代(但它可能会根据函数参数而改变)。我只是想清除它/等,以便在所有其他情况下程序尽可能快。
编辑:
我的不同方法的结果:
Timings (for a sample set of data):
reclaring vector method: 111623 ms
clearing/resizing method: 126451 ms
looping/setting to 0 method: 88686 ms