是否有之间的差异size_t和container::size_type?
我所理解的size_t是更通用的,可以用于任何size_types.
但是container::size_type针对特定种类的容器进行了优化?
我看到人们size_t只要意味着无符号整数就会使用.例如:
class Company {
size_t num_employees_;
// ...
};
Run Code Online (Sandbox Code Playgroud)
那是好习惯吗?有一点是你必须包括<cstddef>.应该是unsigned int吗?甚至只是int?
只是使用int对我有吸引力的声音,因为它避免了像这样的愚蠢错误(因为人们经常使用int):
for(int i = num_employees_ - 1; i >= 0; --i) {
// do something with employee_[i]
}
Run Code Online (Sandbox Code Playgroud) 我在使用这样的循环时遇到了一个问题,
//vector<int> sides;
for (int i = 0; i < sides.size()-2; i++) {
if (sides[i] < sides[i+1] + sides[i+2]) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是size()方法使用无符号数字。因此,大小小于2的向量会产生不确定的结果。
我知道我应该为循环使用一个无符号变量,但是它不能解决问题。所以我不得不通过类型转换或使用某些条件来处理它。
我的问题是,为什么STL为什么使用unsigned int来消除否定索引访问冲突并产生更多问题?