使用 vector<int>::size_type 和普通整数有什么区别?
What is difference of using vector<int>::size_type and a normal integer?
我是 c++ stl 语言的初学者。我想知道这两个代码之间的区别.我问我的朋友,但他说两者都是一样的。谁能解释一下这两者是否相同。 并解释为什么这些是不同的
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<double> student_marks(20);
for (vector<double>::size_type i = 0; i < 20; i++){
cout << "Enter marks for student #" << i+1
<< ": " << flush;
cin >> student_marks[i];
}
return 0;
}
和
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<double> student_marks(20);
for (int i = 0; i < 20; i++)
{
cout << "Enter marks for student #" << i+1
<< ": " << flush;
cin >> student_marks[i];
}
return 0;
}
vector<T>::size_type
是一个依赖于实现的类型,通常size_t
。由于它不是由标准指定的,并且可能会更改,因此在处理该类型的元素时,您应该更喜欢使用它。例如,vector<T>::size()
的类型返回一个vector<T>::size_type
。因此,如果要使用整数索引遍历vector
,则可能希望此索引的类型为 vector<T>::size_type
。这将确保您的代码易于维护 - 如果您决定使用标准库的不同实现,您的代码将是一致的。
size_type
是容器定义的常见typedef之一。碰巧的是,STL中的大小通常是size_t
类型,这是一种无符号整数类型,能够存储理论上可能的任何类型的对象的最大大小。
该值很可能与 int 兼容,但正确的做法是始终使用 size_type
进行矢量索引。这保证始终有效(当然索引不应大于vector.size())。
如果你试图比较无符号和有符号类型(比如上面的int),你可能会得到不可预测的结果,因为有符号类型会转换为无符号类型。
相关文章:
- 努力将整数转换为链表。不知道我在这里做错了什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 当我们从/tp地址中添加/减去一个整数时会发生什么
- 将一系列整数放入类的最佳方法是什么?
- 什么是自动 t1=std::make_tuple(case1==case2,整数)的值
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- int8_t和uint8_t真的是整数吗?它们有什么用?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 为什么此指针值不能转换为整数的规则是什么?
- 为对象分配整数.输出将是什么?
- 我正在尝试制作一个程序,在添加 n 天(整数)后告诉一个人什么是一天(例如星期一等)
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在C++中,将无符号整数转换为八进制表示,反之亦然的最佳方法是什么
- 什么是 16 字节有符号整数数据类型?
- 计算机使用什么方法添加无符号整数
- " ans += (a[i] - ans * r > 0); "是什么意思,其中 ans,r 是整数,a[i] 是数组元素?
- 有什么区别 - 常量 int x = 5000;和常量整数 x = 50'00;在C++?
- 将大小转换为整数有什么问题?
- 在函数声明之后声明整数有什么用?