繁体   English   中英

std :: size_t或std :: vector <Foo> ::尺码​​类型?

[英]std::size_t or std::vector<Foo>::size_type?

当我在std::vector<Foo> (或具有随机访问迭代器的每个容器)上循环时,我使用无符号整数变量i 如果我想遵守规范,应该使用std::size_t还是容器本身指定的类型: std::vector<Foo>::size_type

如果我选择std::size_t (出于可读性原因),我可以确定std名称空间中每个容器的每个实现都将std::size_t用作size_type吗?

注意:我仅使用C ++ 98(出于兼容性原因)。

std::vector<Foo>::size_typestd::size_t 不一定相同。 即使对于C ++ 11也是如此。

但是我个人使用std::size_t作为std::vector索引,而与类型std::size_t

如果您特别勤奋,则可以始终使用静态断言。 显然, static_assert是C ++ 98以后的新增功能,但是按照该标准,您可以使用类似

static char wrong_size_1[1 + sizeof(std::size_t) - sizeof(std::vector<Foo>::size_type)];

static char wrong_size_2[1 - sizeof(std::size_t) + sizeof(std::vector<Foo>::size_type)];

如果类型类型的大小不同,则会导致编译时失败。

我可以确定std名称空间中每个容器的每个实现都将std::size_t用作size_type吗?

你不能。 但是实际上,您可以相信std::size_t对于基于单个数组的矢量或任何其他容器而言足够大,因为

size_t可以存储任何类型(包括数组)的理论上可能存在的对象的最大大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM