无法递归的五点半

for_each(day.begin(),day.end(),bind2nd(Add(),me))

导航

<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

相册

收藏夹

C++

Unix/Linux

个人主页

其他

软件工程

网络管理

综合

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

将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;
}


posted on 2006-10-23 21:57 五点半 阅读(1731) 评论(2)  编辑 收藏 引用 所属分类: 使用标准库和Boost库

评论

# re: 将map中的数据导入到vector中(模板元编程) 2006-10-24 07:43 chenger

这个只能算是STL的应用,和Meta-Programming没什么关系……  回复  更多评论   

# re: 将map中的数据导入到vector中(模板元编程) 2006-10-24 10:51 五点半

楼上批评的对哈!
有一些代码是meta-programming的,主要不对题,没有贴出来.
算了,我还是改改  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理