gpt4 book ai didi

c++ - 使用 pop_back 时防止指针失效

转载 作者:行者123 更新时间:2023-11-27 22:48:47 26 4
gpt4 key购买 nike

如果有一个指针指向 vector 的最后一个元素,我想删除该元素但通过指针保留数据,我该怎么做?

vector<int> a;
a.push_back(1);
int * b = a[0];
a.pop_back(); //b is invalidated

我是被迫使用不同的容器还是有其他方法?

最佳答案

从这个问题看来,您似乎特别想保留一个指针,即从容器中删除的元素。所有容器都使指向已删除对象的指针和引用无效。如果您需要从容器中删除对象但保持指向的对象处于事件状态,唯一可行的标准库容器是 std::list<T>。 : 你可以splice()将对象放入不同的列表中:

std::list<int> a;
std::list<int> removed;

a.push_back(1);
int* b = &a.front();
a.splice(a.begin(), removed);

此操作后 b 指向的对象不在 a 中但它在 removed相反。

关于c++ - 使用 pop_back 时防止指针失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39990048/

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