std::map 的 inserter 实现
来源:互联网 发布:商业比赛队伍名称知乎 编辑:程序博客网 时间:2024/05/22 00:41
本来 std::map 不是 back insertable sequence,但是论坛上有人希望对一个 map 进行 std::copy in, std::copy out,于是偶就随便写了这么的个东西。。
template>class map_inserter {public: typedef std::map<_Key, _Value, _Compare> map_type; typedef typename map_type::value_type value_type;private: map_type &m_;public: map_inserter( map_type &_m ) : m_(_m) {}public: template class map_inserter_helper { public: typedef map_inserter<_K, _V, _Cmp> mi_type; typedef typename mi_type::map_type map_type; typedef typename mi_type::value_type value_type; map_inserter_helper( map_type &_m ) :m_(_m) {} const value_type & operator= ( const value_type & v ) { m_[v.first] = v.second; return v; } private: map_type m_; }; typedef map_inserter_helper<> mi_helper_type; mi_helper_type operator* () { return mi_helper_type( m_ ); } map_inserter<_Key, _Value, _Compare> &operator++() { return *this; } map_inserter<_Key, _Value, _Compare> &operator++(int) { return *this; }};template map_inserter<_K, _V, _Cmp> map_insert( std::map<_K, _V, _Cmp> &m ) { return map_inserter<_K, _V, _Cmp>( m );}int main(){ vector< pair > v; map m; m[3] = string("Hello"); copy( m.begin(), m.end(), back_inserter(v) ); m.clear(); copy( v.begin(), v.end(), map_insert(m) );}
- std::map 的 inserter 实现
- Std::map的排序
- std::map的使用
- std::map的用法
- std::map的使用
- std::map的机制
- std::map的使用方法
- std::map的使用
- inserter的用法
- std::set/std::map的"建议插入"
- std::set/std::map 的几个为什么
- std::map的用法总结
- std::map的用法总结
- std::map的用法总结
- std::map排序的原理
- std::map排序的原理
- std::map的一些用法
- std::map的使用例程
- 使用PowerDesigner建立数据库的过程
- java连接Access数据库的代码
- 大量的歌曲免费上传空间 【网络搜集】
- 前触发器和后触发器简介(downmoon)
- AXIS学习笔记
- std::map 的 inserter 实现
- 用PowerDesigner建模步骤
- 用RTTI 来改变控件的值
- 呵呵,可以有临时文件夹的设置了~
- J2ME结构与相关规范介绍
- Short introduction to virtualization techniques
- 开发人员的方向选择
- 蜷伏在沙发里的女人
- const 用法