如何从结构向量k等于0的结构向量中擦除所有值?
struct tabuRecord {
int x;
int y;
int k;
tabuRecord( int x, int y, int k)
: x(x), y(y), k(k){}
};
vector <tabuRecord> tabu;
v.insert(v.begin(), tabuRecord(1, 2, 3));
v.insert(v.begin(), tabuRecord(4, 5, 0));
v.insert(v.begin(), tabuRecord(7, 8, 9));
v.insert(v.begin(), tabuRecord(10, 11, 0));
我试图
tabu.erase(std::remove(tabu.begin(), tabu.end(), tabu.k=0), tabu.end());
和
tabu.erase(std::remove(tabu.begin(), tabu.end(), tabuRecord.k=0), tabu.end());
最佳答案
我猜您想做的是删除所有具有k==0
的对象,因此为此创建一个lambda:
tabu.erase(
std::remove_if(tabu.begin(), tabu.end(),[](const tabuRecord& t){return t.k == 0;}),
tabu.end());
std::remove
无法工作,因为它不是要删除的一个值,而是具有特定模式的所有值,而std::remove_if
则要这样做。