将map中的数据导入到vector中

将map中的数据导入到vector中

要将一个map<T1,T2>中的数据导入到一个vector<T2>中,可以考虑使用标准库中的transform,但map<T1,T2>::iterator与vector<T2>::iterator是不匹配的,受《Effective STL》第20条启发写个map2vector的functor,可以解决这个问题(不过这个还不算真正的meta-programming):
#include  < map >
#include 
< vector >
#include 
< iostream >
#include 
< string >
#include 
< iterator >

using   namespace  std;

struct  map2vector
{
    template
< typename T >
    
const  typename T::second_type &   operator ()( const  T &  p)
        {
            
return  p.second;
        }
};


int  main()
{
    map
< string , string >  m;
    vector
< string >  v;

    m[
" key1 " ] = " sdf111 " ;
    m[
" k2 " ] = " sdf11 " ;
    m[
" k3 " ] = " sdf2 " ;

    transform(m.begin(),m.end(),back_inserter(v),map2vector());
    copy(v.begin(),v.end(),ostream_iterator
< string > (cout, " \n " ));
    return   0 ;
}


你可能感兴趣的:(将map中的数据导入到vector中)