如何有效地使用向量?

Lev*_* 31 2 c++ vector

我在我的代码中使用向量和向量size_type.

#include <iostream>
#include <vector>

using namespace std;
using std::vector;

typedef vector<int>::size_type size_type;

int main()
{
    size_type n; 
    cin>>n;
    vector<int> u(n,0);
    for(size_type i = 0; i != n; ++i) {
      cin >> u[i];
    }
    cout << *u.end();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误是当我输入n = 5时.向量请求5个元素,然后输出0或一些垃圾值.如何打印最后一个元素?

rem*_*s4e 12

u.end()是一个无法解除引用的迭代器(所谓的"通过结束迭代器").使用u.back()获得的最后一个值.


das*_*ght 5

错误在这里:

cout<<*u.end();
Run Code Online (Sandbox Code Playgroud)

所述end()迭代器指向元件一个过去的矢量的末端.取消引用它始终是未定义的行为.

如果你有一个end()迭代器并希望看到最后一个元素,请使用std::prev,如下所示:

cout << *std::prev(u.end());
Run Code Online (Sandbox Code Playgroud)