gpt4 book ai didi

c++ - 从 vector 中删除特定元素不起作用

转载 作者:行者123 更新时间:2023-12-02 17:53:42 25 4
gpt4 key购买 nike

// erasing from vector
#include <iostream>
#include <vector>

int main ()
{
std::vector<int> myvector;

// set some values (from 1 to 10)
for (int i=1; i<=10; i++) myvector.push_back(i);

//First for loop
for(int i=myvector.size()-1;i>=0;i--)
{
myvector.erase(myvector.begin()+i);
}

//second for loop which isn't working

// for(int i=0;i<myvector.size();i++)
// {
// myvector.erase(myvector.begin()+i);
// }



std::cout << "myvector contains:";
for (unsigned i=0; i<myvector.size(); ++i)
std::cout << ' ' << myvector[i];
std::cout << '\n';

return 0;
}

在此代码中,我有两个 for 循环执行完全相同的操作。第一个正在工作,而评论的第二个则没有,如果我使用注释的 for 循环,输出是:

myvector contains: 2 4 6 8 10                                                                                             

知道为什么会发生这种情况吗?

最佳答案

这是因为在你调用 myvector.size() 的情况下,它会返回越来越小的数字,因为你的 vector 每次迭代都会缩小。

在第一个版本中,您只调用一次来初始化i,这就是为什么没有问题。但在第二个版本中,它在每次迭代中都会被调用。

关于c++ - 从 vector 中删除特定元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60685380/

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