gpt4 book ai didi

c++ - 如何保持指针在 vector 中有效,指向其他 vector 中的项目

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:56 26 4
gpt4 key购买 nike

int main() {
//class B and C inherits from A

vector<B> b;
vector<C> c;
vector<A*> a;

{
B b_temp;
b.push_back(b_temp);
C c_temp;
c.push_back(c_temp);

a.push_back(&b[0]);
a.push_back(&c[0]);

b.push_back(b_temp);//this will break a, since it will move the b vector. is there an efficent way to move the pointers with it?
//pointer vector a's order is important
}

system("PAUSE");
return 0;
};

当向指向的 vector b中添加新元素时,它会扩展并分配新的内存。指针 vector a 将指向坏内存。有什么有效的方法可以重新指向先前的 vector 吗?

a 指向几个不同的 vector ,它的顺序很重要。添加新元素时,我希望它保持相同的顺序并最后添加新元素。

最佳答案

bc 使用 std::deque 而不是 vector。它具有与 vector 大部分相同的属性(O(1) 随机访问等),而且效率几乎一样,而且 push_back 从不移动其基础数据。

关于c++ - 如何保持指针在 vector 中有效,指向其他 vector 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com