c++中的向量迭代和移除
Vector Iteration and Removal in C++
我正在尝试迭代向量并删除对象的第一次出现。我一直得到一个编译错误(使用g++),但我正在删除它的方式stackoverflow回答和其他来源建议删除它。可能我遗漏了一些非常简单的东西,所以另一双眼睛也会很棒。
#include <iostream>
#include <vector>
#include <assert.h>
using namespace std;
bool Garage::remove(const Car &car){
assert(!empty());
int size = v.size();
for(vector<Car>::const_iterator it = v.begin(); it != v.end(); ++it){
if(it -> Car::make() == car.Car::make()){
it = v.erase(it);
assert(v.size() == size - 1);
return true;
}
}
return false;
}
编译错误是错误:调用std::vector::erase(const Car&)'没有匹配的函数
您正在尝试使用const_iterator擦除。既然要修改vector,就改用常规迭代器。
for(vector<Car>::iterator it = v.begin(); it != v.end(); ++it){
如此:
int main()
{
vector<int> ints;
for (vector<int>::iterator iter = ints.begin();iter != ints.end();++iter)
{
ints.erase(iter);
}
}
这并不:
int main()
{
vector<int> ints;
for (vector<int>::const_iterator iter = ints.begin();iter != ints.end();++iter)
{
ints.erase(iter);
}
}
使用const_iterator时出错:
test.cpp:18:22: error: no matching function for call to ‘std::vector<int>::erase(std::vector<int>::const_iterator&)’
似乎需要使用find来查找元素的索引,然后将其擦除。我说"appear "是因为我不是c++程序员
相关文章:
- C++11 迭代向量的新方法?
- 迭代向量以获得搜索功能
- 为什么迭代向量在 c++ 中给出固定地址?
- 如何从向量映射中迭代向量
- 我怎样才能在不重复的情况下随机迭代向量的每个元素
- 是否有用于迭代向量的函数,而不管其类型如何?
- 您可以在一段时间内迭代向量
- 迭代向量向量中的第 i 行
- 指针的迭代向量会导致分段错误
- 使用一个迭代器迭代向量的向量
- 迭代向量时跳过行
- 迭代向量以更新word_counter
- 迭代向量中属性具有特定值的元素范围
- 在C++中迭代向量
- 在迭代向量的 for 循环中无效使用非静态数据成员
- 在C++中迭代向量
- 迭代向量时陷入无限循环的问题
- 迭代向量字符串的字符(C++禁止指针和整数之间的比较)
- 在 c++11 中,迭代向量的最现代、最"right"的方法是什么
- 5秒内迭代向量5