У меня есть этот код:Ошибка при добавлении ИНТ элементов из вектора с ++
// Example program
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> test_vector;
std::vector<int>::iterator v;
int test = 1;
int sum = 0;
for (int i = 0; i < 10; i++) {
test = test * 2;
test_vector.push_back(test);
}
for (v = test_vector.begin(); v < test_vector.end(); v++) {
std::cout << *v << " ";
}
std::cout << std::endl;
std::reverse(test_vector.begin(), test_vector.end());
for (v = test_vector.begin(); v < test_vector.end(); v++) {
std::cout << *v << " ";
}
std::cout << std::endl;
for (v = test_vector.begin(); v < test_vector.end(); ++v) {
sum = sum + test_vector[*v];
std::cout << sum << " ";
}
return 0;
}
Это довольно просто, у меня есть вектор, заполнить его с некоторыми элементами, чем происходит обратное, и, наконец, пытается добавить все элементы ,
Выход заключается в следующем:
2 4 8 16 32 64 128 256 512 1024
1024 512 256 128 64 32 16 8 4 2
0 0 0 0 0 0 0 4 68 324
Вопрос заключается в следующем: Что я делаю неправильно в последнем цикле, где sum
есть?
Я бы хотел (а) это быть как-то 1024 + 512 + 256
и т.п .;
'test_vector [* итератор];' большой код запах –
что у вас есть UB, вы должны иметь 'сумма = сумма + * v; 'вместо' sum = sum + test_vector [* v]; ' –
Итератор не является индексом. – jxh