gpt4 book ai didi

c++ - vector::erase 不会删除所需的元素,而是删除 vector 中的最后一个元素

转载 作者:太空狗 更新时间:2023-10-29 19:52:23 24 4
gpt4 key购买 nike

我一直在努力学习c++,但现在我遇到了一个让我很困惑的问题。问题是,当我尝试从 vector 中删除一个元素时,删除函数不会删除我想要删除的元素,而是从 vector 中删除最后一个元素。我用这段代码重新创建了问题,因此比起我的整个代码更容易理解我的问题:

#include <vector>
#include <iostream>

int main()
{
std::vector<int> c;
for(int i=0; i<=10; i++){
c.push_back(i);
}

for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';

c.erase(c.begin()+2);

for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';

c.erase(c.begin()+2, c.begin()+5);

for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';

}

结果不是预期的:

0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6

当我以为结果会是

0 1 2 3 4 5 6 7 8 9 10
0 1 3 4 5 6 7 8 9 10
0 1 2 7 8 9 10

我是不是做错了什么,或者为什么它没有像我想象的那样工作?如果相关,我正在使用适用于 Windows 的 MinGW 编译器。

最佳答案

删除后,不打印vector的内容,只打印循环变量。

只需将 cout 部分替换为

for (int i=0;i<c.size();i++) {
std::cout << c[i] << " ";
}

它会按预期工作。

关于c++ - vector::erase 不会删除所需的元素,而是删除 vector 中的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26455188/

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