**********折磨编译器的一句代码,程序在 vs2003 上编译通过,但是在 GCC3.3.4 和 GCC 4.1.2 和VS2005 中都编译失败
#include <map>
#include <utility>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
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;
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::unique_copy(val.begin(),val.end(),std::back_inserter(val_a),mod_equal);
//这个是非简写
//std::unique_copy(val.begin(),val.end(),std::back_inserter<std::vector<std::pair<std::string,std::string> > >(val_a),mod_equal);
//程序在 vs2003 上编译通过,但是在 GCC3.3.4 和 GCC 4.1.2 和VS2005 中都编译失败
for(size_t i = 0; i < val_a.size();++i)
{
std::cout<<val_a[i].first<<" "<<val_a[i].second<<endl;
}
//system("pause");
}