C++ 如何安全地获取向量元素的指针/引用?

问题描述 投票:0回答:1

如何获取和存储向量中元素的指针/引用而不用担心内部向量重新分配?

例如:

std::vector<int> v1; v1.push_back(10); std::vector<int*> v2; v2.push_back(&v1[0]);
即使 

v2

 位于另一个作用域/函数/类中,如果 
v1
 会在内部重新分配内存,它也可以安全地存储指向 
v1
 值的指针。怎么做呢?或者
也许另一个容器类更适合这项任务?

c++ pointers vector reference containers
1个回答
0
投票
如果向量增长,所有指向该向量元素的指针(以及迭代器)都将失效,事情就是这样。

您可以预先预留空间,只要向量不增长超出指定的容量,那么指向向量元素的指针、引用和迭代器将保持有效。这也是矢量的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.