int main() { vector g1; vector :: iterator i; vector :: reverse_iterator ir;
for (int i = 1; i <= 5; i++)
g1.push_back(i);
cout << "Output of begin and end\t:\t";
for (i = g1.begin(); i != g1.end(); ++i)
cout << *i << '\t';
cout << endl << endl;
cout << "Output of rbegin and rend\t:\t";
for (ir = g1.rbegin(); ir != g1.rend(); ++ir)
cout << '\t' << *ir;
return 0;
}
这里的代码变量“i”已被声明为迭代器以及for循环中的变量。这不是一个错误吗?
如果我们看到第一个for循环,它表示循环将运行直到i!= g1.end(),这意味着*(g1.end())的值不应该由* i显示但它是给予。 ide显示输出1 2 3 4 5对我来说它应该是1 2 3 4。
答案 0 :(得分:0)
i
被定义为参数列表中的迭代器。当你在第一个for
循环中重新定义它时,这是一个仅针对循环范围的新定义 - 这是完全合法的,虽然不是很好的做法。
vector::end()
指向最终项目后的内存,而不是最终项目。所以,是的,矢量中的最后一项将被打印出来。