小问题之语句疑惑

mickwang 2003-08-19 11:35:43
typedef typename Container::value_type value_type;

这样的语句是什么意思?
用typename的作用是什么?
另外,Iterator 的tag是做什么用的?
...全文
26 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dddd8888 2003-08-20
  • 打赏
  • 举报
回复
up
oopig 2003-08-19
  • 打赏
  • 举报
回复
1.这个语句是把Container::value_type类型另命名为value_type,这样的语句一般在模板类的内部使用,使得内部使用的时候只要认识value_type就可以了,不需要关心这个value_type具体的对应到哪一个真正的类型。
2.typename的作用是告诉编译器Container::value_type这是个类型(struct,class),用于模板类。同时因为是模板类,不能直接编译成具体的实际代码,所以需要告诉编译器这是个类型,否则编译不过。
3.iterator的tag是一个标签,用来标识不同的iterator,编译器根据这个tag使得形式上相似的函数调用能够编译成不同的具体函数调用。这也是traits机制的一个基本原理。具体例子可以参看《STL源码剖析》P95

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧