采用函数对象删除multimap(c++) 中的重复Key

 #include <string>

#include <map>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

 

//构造函数对象,指定pair 比较的规则

bool mod_equal(std::pair<const std::string,std::string> &p1,
      std::pair<const std::string,std::string> &p2 )
{
 return p1.first == p2.first;
}

 

//去处 multimap 里面重复数据的方法
int main(int argc,char *argv[])
{
 std::multimap<std::string,std::string> val;
 val.insert(make_pair("aaaa","abc"));
 val.insert(make_pair("aaaa","cccc"));
 val.insert(make_pair("vvv","fsdf"));
 val.insert(make_pair("vvv","ggggg"));
 val.insert(make_pair("aaaa","cdddsa"));
 val.insert(make_pair("bbb","cdddsa"));

 std::multimap<std::string,std::string>::iterator it;
 it = val.begin();
 for(it = val.begin(); it != val.end();++it)
 {
  std::cout<<it->first<<" " <<it->second<<endl;
 }

 std::cout<<endl;
 std::vector<std::pair<std::string,std::string> > val_a;

//采用std::back_inserter 是因为需要插入到对应的vector,不能直接用val_a.begin,因为需要赋值
 std::unique_copy(val.begin(),val.end(),std::back_inserter(val_a),mod_equal);
 for(size_t i = 0; i < val_a.size();++i)
 {
  std::cout<<val_a[i].first<<" "<<val_a[i].second<<endl;
 }

 system("pause");
}

你可能感兴趣的:(C++,String,vector,iterator,include,pair)