c++ - vector 元素是否保证有序?

标签 c++ vector

我知道拥有指向 vector 元素的指针是个坏主意,因为在扩展时,涉及的内存地址会发生变化,从而使指针无效。但是,如果我只是使用一个整数来保存我要访问的元素的索引号呢?随着 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;}

最佳答案

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

vector :3 5 1 6 7 4

这里,vector[2] == 1。但是,如果您删除 vector[1](5),那么之后,vector[2] == 6

关于c++ - vector 元素是否保证有序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798727/

相关文章:

c++ - Sprite 和子弹不移动 C++

c++ - C++ 中的 vector 和结构

python - 在 C++ 中嵌入 Python。传递接收列表列表的字符串 vector

vector - gnuplot 矢量箭头长度和流线

c++ - << 和 >> 在 C++ 中

c++ - 如何在 Visual Studio 调试器中访问 IloIntArray 元素?

c# - 帮助我将以下 VB/C++ 代码转换为 C#

c++ - 比较继承自父类但存储在父类 vector 中的类的对象类型

3d - 如何有效地旋转和平移 3D 平面

c++ - 获取一条线的未知端点的角度