c++ - 矢量的正确使用::尺码类型
问题描述
我在一些非常著名的 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 循环中使用它是否公平?
解决方案
基本上,正如其他人所说,上面的代码在编译并完成预期工作的意义上是“好的”。
当他们说意图是int
在向量中插入 10 个 s 时,int
由于循环的格式化方式,s 可以保证为正数,因此 sunsigned int
只会转换为int
.
但是,我认为这不是您所说的好习惯-尺寸类型与插入元素的类型无关-尺寸类型基本上始终是unsigned int
. 仅使用int
orvalue_type
显然会使代码的意图更清晰。
推荐阅读
- java - 无法构建 JavaFX Maven 项目
- php - Laravel 中的显式路由模型绑定?
- kotlin - Kotlin 不能返回接口的实现?
- python - 为什么数据的变化不会改变情节线?
- javascript - 使用对象填充传单弹出窗口?
- user-interface - 鼠标悬停时如何隐藏 GUI?
- scala - 如何使用 AsyncFeatureSpec?
- node.js - 如何在带有上下文的 Koa 中间件中传递参数?
- android - 如何在滚动视图布局中修复页脚 alignParentBottom="true"
- postgresql - postgre 有 map 和 set 结构吗(如 C++ 中的 STL)?