我有std::vector
一些类的元素ClassA
。此外,我想使用 a 创建一个索引,该索引std::map<key,ClassA*>
将一些键值映射到指向向量中包含的元素的指针。
当在向量末尾添加元素(未插入)时,是否可以保证这些指针保持有效(并指向同一个对象)。即,以下代码是否正确:
std::vector<ClassA> storage;
std::map<int, ClassA*> map;
for (int i=0; i<10000; ++i) {
storage.push_back(ClassA());
map.insert(std::make_pair(storage.back().getKey(), &(storage.back()));
}
// map contains only valid pointers to the 'correct' elements of storage
如果我使用std::list
而不是,情况如何std::vector
?