向量使用中的C ++问题

时间:2016-10-08 17:23:27

标签: c++ vector iteration

假设我输入的值介于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];
   }
}

为什么我的代码无法正常工作?

P.S。代码往往对vector的许多元素使用一个值。

1 个答案:

答案 0 :(得分:0)

这不是你想要的:

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

基于的范围为您提​​供元素值,而不是元素索引。

你可能想要:

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