首页 > 解决方案 > 矢量的正确使用::尺码​​类型

问题描述

我在一些非常著名的 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

}

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

vector<int>::size_type将是typedef反过来std::size_t将是unsinged int,但这里我们将int's 存储在vector.

请澄清我对vector<int>::size_type. 在上面的 for 循环中使用它是否公平?

标签: c++c++11

解决方案


基本上,正如其他人所说,上面的代码在编译并完成预期工作的意义上是“好的”。

当他们说意图是int在向量中插入 10 个 s 时,int由于循环的格式化方式,s 可以保证为正数,因此 sunsigned int只会转换为int.

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


推荐阅读