gpt4 book ai didi

C++ for 循环 - size_type 与 size_t

转载 作者:IT老高 更新时间:2023-10-28 22:16:31 25 4
gpt4 key购买 nike

C++ Primer书,第 (3) 章,有以下 for 循环将 vector 中的元素重置为零。

for (vector<int>::size_type ix = 0; ix ! = ivec.size(); ++ix)
ivec[ix] = 0;

为什么使用 vector<int>::size_type ix = 0 ?我们不能说int ix = 0 ?在第二个表单上使用第一个表单有什么好处?

谢谢。

最佳答案

C++ 标准说,

 size_type  |  unsigned integral type  |  a type that can represent the size of the largest object in theallocation model

然后添加,

Implementations of containers described in this International Standard are permitted to assume that their Allocator template parameter meets the following two additional requirements beyond those in Table 32.

  • The typedef members pointer, const_pointer, size_type, and difference_type are required to be T*,T const*, size_t, and ptrdiff_t, respectively

所以很可能,size_typesize_t 的 typedef。

标准确实将其定义为,

template <class T> 
class allocator
{
public:
typedef size_t size_type;
//.......
};

所以最需要注意的点是:

  • size_typeunsigned 整数,而 int 必然 未签名。 :-)
  • 它可以代表最大的索引,因为它是无符号的。

关于C++ for 循环 - size_type 与 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com