gpt4 book ai didi

c++ - vector 删除范围内的元素

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:10 35 4
gpt4 key购买 nike

为什么程序停止了?该程序可以编译,但如果我运行,他就会中断,并给出一些关于迭代器 vector 不可递增的信息。怎么了?

int main() 
{
std::vector<int> vec;
for (int i = 1; i <= 100; ++i)
vec.push_back(i);
for (auto itr = vec.begin() + 5; itr < vec.end() - 5; ++itr)
vec.erase(itr);
for (const auto& itr : vec)
std::cout << itr << std::endl;
return 0;
}

最佳答案

你错了,因为函数 erase 不是空迭代器。所以你可以这样做:

auto itr = vec.begin() + 5;
while (itr != vec.end() - 5) {
itr = vec.erase(itr);
}

或更灵活(无循环)

vec.erase(vec.begin() + 5, vec.end() - 5);

关于c++ - vector 删除范围内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44911301/

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