正确使用vector<int>::size_type

Onk*_*jan 2 c++ c++11

我在一些关于 C++ 的著名书籍中看到——

vector<int> ivec;

for (vector<int>::size_type i = 0; i != 10; ++i) {
    ivec.push_back(i);
    ivec.push_back(i);  // duplicate copies of each number

}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么vector<int>::size_type在这里使用。他们没有i与向量的大小进行比较。int目的是在向量中插入 10 ,所以这int i = 0是正确的做法,不是吗?

vector<int>::size_type将为,而 又将为typedef,但这里我们将' 存储在 中。std::size_tunsinged intintvector

请澄清我的理解vector<int>::size_type。在上面的 for 循环中使用它公平吗?

小智 5

基本上,上面的代码是“好的”,因为它可以编译并完成预期的工作,正如其他人所说的那样。

当他们说意图是int在向量中插入十个 s 时,int由于循环的格式化方式,s 被保证为正,因此unsigned int将仅转换为int.

但是,我不认为这是您所说的好习惯 - 大小类型与插入的元素的类型无关 - 大小类型基本上始终是unsigned int. 仅使用intorvalue_type显然会使代码的意图更加清晰。