那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

模板套模板~~

#include  < iostream >
#include 
< map >
#include 
< string >

using   namespace  std;

int  main()
{
    map
< string int >  map1;
    map
< string , map < string int >   >  map2;
    map1[
" test " =   2 ;
    map2[
" test1 " =  map1;

    cout 
<<  map2[ " test1 " ][ " test " <<  endl;
    
return   0 ;
}
以上代码简单的实现了map对"二维"形式的支持,很简单,不是么?可是我第一次面对这个问题的时候模板套模板的整糊涂了,记录一个留个念想~~

posted on 2006-03-22 00:06 那谁 阅读(1661) 评论(5)  编辑 收藏 引用 所属分类: C\C++

评论

# re: 模板套模板~~  回复  更多评论   

typedef一下就不糊涂了。
2006-03-22 09:08 | 沐枫

# re: 模板套模板~~  回复  更多评论   

#include <iostream>
#include <map>
#include <string>

using std::map;
using std::cout;
using std::endl;
using std::string;

template<class T1,class T2>
void PrintMap(map<T1,T2 >& maptemp,string tempstr = "")
{
cout<<tempstr
<<endl;
typename map<T1,T2 >::const_iterator pos;

for (pos = maptemp.begin();pos != maptemp.end();++pos) {
cout<<"map["
<<pos->first
<<"]="
<<pos->second
<<" ";
}

}

int main(void)
{
map<string,int> map1;
map<string,map<string,int> > map2;

map1["string"] = 2;
map2["string2"] = map1;

PrintMap<string,int>(map1,"map1");

return 0;
}
2006-04-07 17:59 | 红叶搂风

# re: 模板套模板~~  回复  更多评论   

你那样使用根本不符合STL的习惯的
2006-04-07 18:01 | 绾㈠彾鎼傞

# re: 模板套模板~~  回复  更多评论   

记住,STL容器提供的是元素的值拷贝语义。
想想map2["string2"] = map1;是发生了什么事情?明白的话,就不应该这样使用map了
2006-07-09 00:27 | Corner

# re: 模板套模板~~  回复  更多评论   

to corner,那应该如何写?请明示,谢谢~~
2006-07-09 00:35 | 创系

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