gpt4 book ai didi

c++ - std :vector to remove its elements while going through a loop? 的替代品

转载 作者:太空狗 更新时间:2023-10-29 23:37:14 25 4
gpt4 key购买 nike

我的循环遍历 vector 的元素。在这个循环中,一些元素被(我希望它们被)删除。虽然 std::vector 不允许这样做,但我想要一个替代方案。

for(unsigned int j = 0; j < rectArray.size(); j++)
{
if( rectArray[j] == 2 )
{
rectArray.erase(rectArray.begin() + j);
}
//...
}

你认为 std::list 在这里会好吗?我可以用别的东西吗?

最佳答案

除非 vector 的元素复制起来非常昂贵,否则最简单的方法可能是 std::copy_if(或以其他方式复制您想要保留的元素)到一个新的 vector 中,然后交换那与原来的。还有 remove_if 后跟 resize

如果重新定位元素的成本非常高,那么 list 可以避免这种情况,但这取决于您对集合进行的其他操作。如果您使用 list 执行其他操作会非常慢,那么您只是将问题转移到了别处。

关于c++ - std :vector to remove its elements while going through a loop? 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716735/

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