【发布时间】:2021-07-12 07:12:36
【问题描述】:
它给了我 0 应该是 5 为什么会这样。
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> myvector{1, 2, 3, 4, 5};
auto it = myvector.end();
cout<<*it;
return 0;
}
【问题讨论】:
-
end不给你(一个迭代器)最后一个元素,但在最后一个元素之后。 -
如果您需要一个引用最后一个元素的迭代器,请尝试使用
rbegin()。 -
*it取消引用end()迭代器,因此行为未定义。只给定一个结束迭代器,通常不可能回到容器的最后一个元素。尝试auto it = std::advance(myvector.begin(), myvector.size() - 1)(只要myvector.size()不为零——如果为零,则行为未定义)或auto it = myvector.rbegin()(提供不同类型的迭代器)。