gpt4 book ai didi

c++ - 在 std vector 中查找 NULL 指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:50 24 4
gpt4 key购买 nike

我正在使用 vector ,有时会有 NULL 条目;我想删除给定 vector 中出现的所有 NULL。到目前为止,我的方法不起作用:

for(int i = sent_flit_list->size() - 1; i >= 0; i--)
if(sent_flit_list[i] == NULL)
sent_flit_list->erase(sent_flit_list[i]);

for(int i = sent_pkt_list->size() - 1; i >= 0; i--)
if(sent_pkt_list[i] == NULL)
sent_pkt_list->erase(sent_pkt_list[i]);

在哪里

vector<Flit*> *sent_flit_list;
vector<Packet*> *sent_pkt_list;

是 vector 。我尝试转换为类型 (Flit*)NULL/(Flit*)0 但没有成功。

任何帮助将不胜感激。

最佳答案

使用 Erase-Remove idiom根据谓词从容器中删除元素。

在你的情况下:

// with a predicate
my_vec.erase(std::remove_if(begin(my_vec), end(my_vec),
[](Flit* x) { return x == nullptr; }),
end(my_vec));

// with a value value
my_vec.erase(std::remove(begin(my_vec), end(my_vec), nullptr),
end(my_vec));

您当前的方法无效,因为 vector::erase需要一个指向 vector 元素的迭代器,而不是存储类型的值。

坦率地说,你所做的似乎有点奇怪。您不应该存储指针,而应该在容器中存储值。如果您需要 nullable 值,请使用 Maybe 类,例如 boost::optional

关于c++ - 在 std vector 中查找 NULL 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460810/

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