这个题有个小坑,一开始我做的时候输出的数都是0,原来是把++放在了迭代器后面{*(begin + (int)grade/10)++}迭代器不支持这种运算。现将自己的正确答案分享一下,望避坑。
#includeusing namespace std; #include #include int main() { vector score(11,0); unsigned int grade; auto begin = score.begin(), end = score.end(); while (cin>>grade) { if (grade<=100) { ++*(begin + (int)grade/10);//注意这里要把++放在迭代器前面,而不是后面 } } for (auto i = score.begin(); i != score.end(); i++) { cout << *i << " "; } cout << endl; system("pause"); return 0; }
这样运行之后输出的数就能跟书上对上了!



