相关疑难解决方法(0)

198
推荐指数
6
解决办法
2万
查看次数

擦除矢量::从矢量结束

我使用时它是否正常(无效)

 vector<T> v;
 v.erase(v.end());
Run Code Online (Sandbox Code Playgroud)

我想用类似的东西

 v.erase(std::find(...));
Run Code Online (Sandbox Code Playgroud)

我应该ifv.end()还是不是?
C++.comCPPreference上没有关于它的信息

c++ iterator vector erase language-lawyer

33
推荐指数
3
解决办法
1万
查看次数

从矢量C++中删除最后一个元素时的分段错误

我创建了一个简单的C++程序来测试C++向量中erase()的行为.

这是我的代码:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // your code goes here

    vector<int> vec;

    vec.push_back(3);
    vec.push_back(4);
    vec.push_back(5);

    cout << vec[0] << " " << vec[1] << " " << vec[2] << endl;

    vec.erase(vec.end());
    //vec.erase(vec.begin());

    cout << vec.size() << endl;

    vec.push_back(12);
    vec.push_back(10);

    cout << vec[0] << " " << vec[1] << " " << vec[2] << endl;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是上面的代码在尝试擦除向量中的最后一个元素时给出了分段错误.但是当我使用begin()擦除第一个元素时,它工作正常.我无法理解它背后的原因.任何帮助将受到高度赞赏.

c++ stl stdvector

3
推荐指数
3
解决办法
4093
查看次数

标签 统计

c++ ×3

iterator ×2

stl ×2

erase ×1

language-lawyer ×1

standards ×1

stdvector ×1

vector ×1