c++ 的这种用法怎么回事?

sunxin1001 2010-01-22 05:10:41
const list<int>::size_type list_size = 64

谁能比较详细的说明一下,为什么这样用?这也是声明一个变量吧,这样做的意义是什么?谢谢!
...全文
226 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2010-01-26
  • 打赏
  • 举报
回复
就是一个类型而已,不过是在模板中声明的类型,所以要模板实例化。
const list<int>::size_type list_size = 64;
这里int只不过是个实例化的类型。
StephenGaoYu 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hqin6 的回复:]
C/C++ code

Member types
of template<class T,class Allocator=allocator<T>>class list;
member type definition
reference Allocator::reference
const_reference Allocator::const_?-
[/Quote]
yjxkmnm 2010-01-25
  • 打赏
  • 举报
回复
可以看成为一种类型的变量
camelisi 2010-01-22
  • 打赏
  • 举报
回复
定义了一个大小为64的常量,size_type 是一个足够大的用于保存list大小的一个类型
list<int>::可以理解成 是int型 list里使用的。
yujunfei_xy 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yujunfei_xy 的回复:]
一家之猜呵:
某以为,是为了给泛型提供一个统一的接口吧,在模板里定义size_type,这样便不用每次都得细空其size type空间具体是什么样的,是unsigned int还是int,还是long,或者其他什么样的……
试着联想iterator?
[/Quote]
抱歉,打错字了,更正如下:
一家之猜呵:
某以为,是为了给泛型提供一个统一的接口吧,在模板里定义size_type,这样便不用每次都得细究其size type究竟具体是什么样的,是unsigned int还是int,还是long,或者其他什么样的……
试着联想iterator?
pengzhixi 2010-01-22
  • 打赏
  • 举报
回复
这叫内嵌类型。
jamseyang 2010-01-22
  • 打赏
  • 举报
回复
learning……
huanyuxiake 2010-01-22
  • 打赏
  • 举报
回复
和普通的类型一样。。一帮用做下标
lovesi3344 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 sunxin1001 的回复:]
const list <int>::size_type list_size = 64

谁能比较详细的说明一下,为什么这样用?这也是声明一个变量吧,这样做的意义是什么?谢谢!
[/Quote]

const list <int>::size_type list_size = 64;
首先,变量名是list_size
第二,变量的类型是list<int>::size_type list<int>::是类限定符,说明size_type不是普通函 数,这里用<int>显式指定类型,模板实例化
第三,这个变量是只读的,用const限定符
第四,const变量要初始化,否则系统给一个垃圾值,然后这个垃圾值是只读的(const),不可修改的
导致以后无法给变量赋值。
sunnywyg 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aduwuhan 的回复:]
看样子,你这是模板类。
size_type是一种随用户定义的数据类型,这里你用了 <int>,因而是int类型。
使用模板类是为了代码重用,如你还可以声明const list <double>::size_type list_size = 64 ,这样就不要在类定义时写两句。

[/Quote]

这个说法貌似不对吧?那你的意思岂不是说下面的size_type是double类型了?

重用倒是对的,它只是一种表示容器大小的类型,方便重用和跨平台
yujunfei_xy 2010-01-22
  • 打赏
  • 举报
回复
一家之猜呵:
某以为,是为了给泛型提供一个统一的接口吧,在模板里定义size_type,这样便不用每次都得细空其size type空间具体是什么样的,是unsigned int还是int,还是long,或者其他什么样的……
试着联想iterator?
太乙 2010-01-22
  • 打赏
  • 举报
回复


Member types
of template <class T, class Allocator=allocator<T> > class list;
member type definition
reference Allocator::reference
const_reference Allocator::const_reference
iterator Bidirectional iterator
const_iterator Constant bidirectional iterator
size_type Unsigned integral type (usually same as size_t)
difference_type Signed integral type (usually same as ptrdiff_t)
value_type T
allocator_type Allocator
pointer Allocator::pointer
const_pointer Allocator::const_pointer
reverse_iterator reverse_iterator<iterator>
const_reverse_iterator reverse_iterator<const_iterator>



andson1111 2010-01-22
  • 打赏
  • 举报
回复
const list<int>::size_type list_size = 64 可以把 list<int>::size_type看作一个类型,例如int,char什么的。这个意思是list<int>这个模版类里面用来描述大小的类型,
就是list<int>::size_type
luhongyu2108 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aduwuhan 的回复:]
看样子,你这是模板类。
size_type是一种随用户定义的数据类型,这里你用了 <int>,因而是int类型。
使用模板类是为了代码重用,如你还可以声明const list <double>::size_type list_size = 64 ,这样就不要在类定义时写两句。

[/Quote]
正解
qq4398736 2010-01-22
  • 打赏
  • 举报
回复
size_type是一种类型,但因为它是定义在STL里面的list模板类中的,所以前面要加上域list <int>::
aduwuhan 2010-01-22
  • 打赏
  • 举报
回复
看样子,你这是模板类。
size_type是一种随用户定义的数据类型,这里你用了<int>,因而是int类型。
使用模板类是为了代码重用,如你还可以声明const list <double>::size_type list_size = 64 ,这样就不要在类定义时写两句。
yshuise 2010-01-22
  • 打赏
  • 举报
回复
list <int>::size_type 这是一个类型。
同平常用法差不多。
wang7391 2010-01-22
  • 打赏
  • 举报
回复
list<int>::size_type 也是一种类型 对应的基本类型为unsigned int
看看stl源代码

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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