我知道拥有指向 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/