C++中 ,vector的成员是struct,struct的成员有string,double两个类型的数据
C++中,vector的成员是struct,struct的成员有string,double两个类型的数据,想通过string的值删除vector的该struct成员,用e...
C++中 ,vector的成员是struct,struct的成员有string,double两个类型的数据,想通过string的值删除vector的该struct成员,用erase怎么实现
展开
1个回答
展开全部
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct value_type{
value_type(const string &_str, const double _a, const double _b): str(_str), a(_a), b(_b){}
string str;
double a,b;
};
struct functor{
string val;
functor(const string &_val): val(_val){}
bool operator()(const value_type &a){
return a.str == val;
}
};
int main(){
typedef vector<value_type> vector_type;
vector_type v;
v.push_back(value_type("abc", 1.0, 2.0));
v.push_back(value_type("abd", 1.0, 2.0));
v.push_back(value_type("abe", 1.0, 2.0));
cout<<"*******************************************************\n";
for(int i = 0; i != v.size(); ++i){
cout<<v[i].str<<"\n";
}
v.erase(remove_if(v.begin(), v.end(), functor("abd")), v.end());
cout<<"*******************************************************\n";
for(int i = 0; i != v.size(); ++i){
cout<<v[i].str<<"\n";
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询