Cha*_*unt 100 c++ size-type container-data-type
是否有之间的差异size_t和container::size_type?
我所理解的size_t是更通用的,可以用于任何size_types.
但是container::size_type针对特定种类的容器进行了优化?
Eva*_*ran 100
标准容器限定size_type为一个typedef到Allocator::size_type(分配器是模板参数),其为std::allocator<T>::size_type被典型地定义为size_t(或兼容的类型).所以对于标准情况,它们是相同的.
但是,如果使用自定义分配器,则可以使用不同的基础类型.所以container::size_type最好是最大限度的通用性.
Tim*_*imW 39
size_t被定义为用于对象大小的类型,并且取决于平台.container::size_type是用于容器中元素数量的类型,并且取决于容器.所有std容器都size_t用作size_type,但每个独立的库供应商都会选择一个适合其容器的类型.
如果你看一下qt,你会发现size_typeQt容器的版本依赖于版本.在Qt3中,它unsigned int在Qt4中被改为int.
因为std::[w]string,std::[w]string::size_type等于std::allocator<T>::size_type,等于std::size_t.对于其他容器,它是一些实现定义的无符号整数类型.
有时拥有确切的类型是有用的,所以例如,人们知道类型包含在哪里(比如,到UINT_MAX),以便人们可以利用它.或者对于模板,您确实需要将两个相同的类型传递给函数/类模板.
我经常发现我用的size_t是简洁或迭代器.在通用代码中,由于您通常不知道使用模板的容器实例以及容器具有的大小,因此Container::size_type如果需要存储容器大小,则必须使用typedef.
| 归档时间: |
|
| 查看次数: |
41665 次 |
| 最近记录: |