2014-12-06 145 views
0

我有一個包含138個矢量的2D矢量。爲了計算點積,我需要分解138個矢量中的每一個。我有一個工作點產品功能,但我很難從我的初始2D向量中分離出單個向量。這是我有什麼:從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"; 

} 

它最終打印每個向量(索引我)的點積138次。我的templateVector是包含138個「vec」向量的向量,每個向量有5,632個雙精度。我的queryVector也包含5,632雙打。

在此先感謝您的幫助。

+1

我正在學習C++,因此,新來的那種語法,但它不應該是這樣的:在內部:(templateVector [I] VEC) for循環?相反,刪除內循環並使用templateVector [i]而不是vec。 – learningToCode 2014-12-06 03:03:22

+0

天才!謝謝! :) – user3882751 2014-12-06 03:07:43

回答

1

outter環是不必要的(並且是爲什麼你看到的輸出138次,每個矢量的原因),並且內部爲範圍循環不必要地拷貝載體。

簡單地做:

for(auto& vec : templateVector){ 
cout << "\nscalar_product: Index[" << i <<"] " << face.scalar_product(vec, queryVector); 
} 
+0

是的,這也適用。謝謝。謝謝! – user3882751 2014-12-06 03:16:00