当我在 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_type
不一定 为真与std::size_t
相同.即使对于 C++11 也是如此。
但我个人使用 std::size_t
对于 std::vector
索引与类型无关。
如果您感觉特别勤奋,您总是可以使用静态断言。显然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)];
如果类型类型大小不同,这会导致编译时失败。
关于c++ - std::size_t 或 std::vector<Foo>::size_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168636/