Мне просто интересно, есть ли более читаемый способ комбинирования значений двух векторов?Объединение значений двух векторов разного размера
#include <vector>
#include <iostream>
int main(int argc, char ** argv)
{
std::vector<int> v1 = { 1, 2, 3, 7 };
std::vector<int> v2 = { 1, 2, 3, 5, 19 };
std::vector<int>::iterator v2it = v2.begin();
if(v1.size() > v2.size())
{
for(auto v1it = v1.begin(); v1it != v1.end(); ++v1it)
{
*v1it = *v1it + *v2it;
std::cout << *v1it << std::endl;
++v2it;
}
}
else
{
auto v1it = v1.begin();
for(auto v2it = v2.begin(); v2it != v2.end(); ++v2it)
{
*v2it = *v2it + *v1it;
std::cout << *v2it << std::endl;
++v1it;
}
}
return 0;
}
Выход выше:
определяют комбината. –
** Ваш код сломан. ** Он делает так много итераций, как размер * длинного * вектора. При этом он пытается получить доступ к несуществующим элементам * короткого * вектора. Это незаконно. Вопрос требует «сделать его более читаемым», хотя на самом деле неясно, что нужно делать. Это невозможно вывести из сломанного кода. Государство осмысленно, что вы пытаетесь сделать. Как вы хотите «объединить» значение векторов разной длины? – AnT
ОК, я тонкий, есть [ответ] (http://stackoverflow.com/questions/3376124/how-to-add-element-by-element-of-two-stl-vectors) – maverik