您的位置:程序门 -> c/c++ -> c++ 语言



typedef的有些用法搞不明白,请指教


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


typedef的有些用法搞不明白,请指教[已结贴,结贴人:wpp_zyt]
发表于:2007-08-06 09:31:17 楼主
我在《c++程序设计语言》里p393例看见下面的几行代码
template   <class   t,class   a=alloctor <t> > class   std::vector{

public:
    typedef   t   value_type;
    typedef   a   allocator_type;
    typedef   typename   a::size_type   size_type;       //*****   1
    typedef   typename   a::difference_type   diference_type;

    typedef   implementation_dependent1   iterator;//******   2
    typedef   implementation_dependent2   const_iterator;
    typedef   stdreverse_iterator <iterator>   reverse_iterator;//*****   3
}
在1中   typename   a::size_type   是什么意思?去掉typename,写成
typedef     a::size_type   size_type行不行?

在2中   implementation_dependent1   是什么意思?
在3中   stdreverse_iterator <iterator> 又是什么意思?


另外size_t在那个头文件里定义的?我在网上查了一下,据说是这样定义的
typedef   unsigned   int   size_t;我想看看确切的定义
发表于:2007-08-06 09:33:421楼 得分:0
typedef   unsigned   int   size_t;   都到這份上了,你還想怎么確切?:)
发表于:2007-08-06 09:44:562楼 得分:0
我不知道这个定义是否准确
发表于:2007-08-06 09:46:473楼 得分:10
1.   不行,   编译器无法知道   a::size_type   是个类型还是个变量。
2.   伪代码,意思是和具体实现相关。
3.   反向迭代器。
4.   在   stddef.h   里定义
发表于:2007-08-06 09:48:594楼 得分:0
typedef   typename   a::size_type   size_type;
由于现在的编译器没法自行推断出a是个类型名字,因此需要加上typename告诉编译器

implementation_dependent1
实现相关的东西,这里是个占位符,没有给出实际的内容

size_t
要看系统,一般就是定义成unsigned   int的


快速检索

最新资讯
热门点击