用C++ 用迭代器删除容器中的某一个class类型的对象,需要注意的是vector<T>::erase的返回值。
返回值
迭代器跟随最后一个被删除的元素。如果迭代器pos
引用最后一个元素,则返回end()迭代器。
e.g.
class Commodity
{
public:
Commodity(string, string, string, double);
void set_info(string, string, string, double);
string get_id();
string get_name();
string get_origin();
double get_price();
private:
string id;
string name;
string origin;
double price;
};
比如说有Commodity这样的一个类,当我们需要删除name == value时
int main( )
{
vector<Commodity>all_goods;
/*
...
*/
for (vector<Commodity>::iterator it = all_goods.begin(); it != all_goods.end();)
{
if ((*it).get_name() == name) {
//注意erase返回值,此处it不用it++,必须用it = all_goods.erase(it);
cnt++;
it = all_goods.erase(it);
}
else it++;
}
return 0;
}