Вырвать вектор из 2D вектора

0

У меня есть 2D-вектор, содержащий 138 векторов. Мне нужно разбить каждый из 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 раз. My templateVector - это вектор, содержащий 138 векторов "vec", каждый из которых имеет 5632 удвоения. Мой запросВектор содержит 5 632 удвоения.

Заранее спасибо за вашу помощь.

  • 1
    Я изучаю c ++ и, следовательно, новичок в такого рода синтаксисе, но разве это не должно быть примерно так: (vec: templateVector [i]) во внутреннем цикле for? Вместо этого удалите внутренний цикл for и используйте templateVector [i] вместо vec.
  • 0
    Genius! Спасибо! :)
Теги:
c++11
vector

1 ответ

1
Лучший ответ

Ваш петля outter не нужна (и является причиной, по которой вы видите 138 раз для каждого вектора), а внутренний цикл for-range излишне копирует векторы.

Просто выполните:

for(auto& vec : templateVector){
 cout << "\nscalar_product: Index[" << i <<"] " << face.scalar_product(vec, queryVector);
}
  • 0
    Да, это тоже работает. Спасибо. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню