C ++ проблемы в использовании вектора

Допустим, я ввожу значения в диапазоне 0-109 несколько раз. У меня есть вектор, который подсчитывает, сколько раз произошло значение в определенном диапазоне (0-9, 10-19, … 100-109).

Например, мой вектор изначально:

0 0 0 0 0 0 0 0 0 0 0

Я даю 15, 16, 88, 95, 94, 5 в качестве входных данных. Вектор становится:

1 2 0 0 0 0 0 0 1 2 0

Вот мой код:

#include <iostream>
#include <vector>
using std::vector; using std::endl;
using std::cin; using std::cout;

int main()
{
int m=0;
vector<int>vec(11,0);//00000000000

while(cin>>m)
{
vec[m/10]=vec[m/10]+1;//ex: m=15->m/10==1->vec[1]=vec[1]+1->vec[1]==1;
}//use ctrl+z(windows) to break

cout<<"012345678910"<<endl;

for(decltype(vec.size()) i:vec)
{
cout<<vec[i];
}
}

Почему мой код не работает правильно?

Постскриптум Код имеет тенденцию использовать одно значение для многих элементов вектора.

0

Решение

Это не хочу, чтобы вы ожидали:

for(decltype(vec.size()) i:vec)
{
cout<<vec[i];
}

Диапазон на основе дает вам значения элементов, а не индексы элементов.

Вы, вероятно, хотите:

for(const auto& e : vec)
{
cout<<e;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector