矢量元素是否保证有序?

nul*_*ter 1 c++ vector

我知道有一个指向向量元素的指针是一个坏主意,因为在扩展时,所涉及的内存地址将改变,从而使指针无效.但是,如果我只是使用一个包含我想要访问的元素的索引号的整数呢?随着向量增长,这会失效吗?我在想什么看起来像这样:

    #include <vector>

    class someClass{
    string name
    public: string getName(){return name;}
    };

    vector<someClass> vObj;
    int currIdx;
    string search;
    cout<<"Enter name: ";
    cin>>search;

    for(int i=0; i<vObj.size(); i++){
      if(vObj[i].getName()==search)
         currIdx = i;}
Run Code Online (Sandbox Code Playgroud)

us2*_*012 5

不,当向量扩展时,索引号当然不会失效.如果擦除前一个元素,它们将无效(在某种意义上,您不再在常量索引处找到相同的元素),但是:

vector: 3 5 1 6 7 4

在这里,vector[2] == 1.但是如果你擦掉vector[1](5),那么之后,vector[2] == 6.