我有一个包含138个向量的2D向量。我需要打破138个向量中的每一个以计算点积。我有一个工作点产品功能,但我很难从我最初的2D矢量中分离出各个矢量。这就是我所拥有的:
for (unsigned i = 0u; i != templateVector.size(); ++i) {
for(vector<double> vec : templateVector){
// cout << face.quickSort(vec, 0.0, 9.0);
cout << "\nscalar_product: Index[" << i <<"] " << face.scalar_product(vec, queryVector);
}
std::cout << "\n";
}
最终打印每个矢量(索引i)的点积138次。我的templateVector是包含138个“vec”向量的向量,每个向量有5,632个双精度数。我的queryVector也包含5,632个双打。
提前感谢您的帮助。
答案 0 :(得分:1)
你的 outter 循环是不必要的(这就是为什么你看到每个向量的输出的138倍的原因),你内部的for-range循环不必要地复制向量。
简单地说:
for(auto& vec : templateVector){
cout << "\nscalar_product: Index[" << i <<"] " << face.scalar_product(vec, queryVector);
}