c++ - 擦除()向量中的元素不起作用
问题描述
我有一个向量。我需要删除其中的最后 3 个元素。描述了这个逻辑。程序崩溃。可能是什么错误?
vector<float>::iterator d = X.end();
for (size_t i = 1; i < 3; i++) {
if (i == 1) X.erase(d);
else X.erase(d - i);
}
解决方案
如果向量中至少有 3 个项目,删除最后 3 个项目很简单——只需调用pop_back 3 次:
#include <vector>
#include <iostream>
int main()
{
std::vector<float> v = { 1, 2, 3, 4, 5 };
for (int i = 0; i < 3 && !v.empty(); ++i)
v.pop_back();
for ( const auto &item : v ) std::cout << item << ' ';
std::cout << '\n';
}
输出:
1 2
推荐阅读
- angular - 如何为 Angular 中的所有组件创建通用的可重用模型?
- algorithm - 二分查找——访问中间元素的缺点
- jenkins - Webhook 的 Job DSL 扫描的配置块不起作用
- gcc - 在不丢失 .data 常量的情况下混合汇编和 C 的正确标志是什么
- javascript - 如何将字符串设置为对象的键?
- java - 在定义函数的返回类型时,有没有办法指定数组的长度?
- unix - 如何在从 unix 中的输入文件中检索值时删除空白/空格
- python - 带有opencv的Python sqlite
- c++ - 回文问题代码,在 c++ 错误中抛出 'std::out_of_range' 的实例后,我确实被调用终止
- firebase - 如何按'_createTime'对firestore文档进行排序?