我刚开始学习C++并且对向量有疑问.我正在阅读的书中指出,如果我想提取double类型的向量的大小(例如),我应该做类似的事情:
vector<double>::size_type vector_size;
vector_size = myVector.size();
Run Code Online (Sandbox Code Playgroud)
而在Java中,我可能会这样做
int vector_size;
vector_size = myVector.size();
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么有一个名为vector :: size_type的类型?为什么C++不使用int?
Ker*_* SB 23
C++是一种用于库编写*的语言,并且允许作者尽可能通用是其主要优势之一.而不是规定标准容器使用任何特定数据类型,更通用的方法是判定每个容器公开一个size_type成员类型.这允许更大的灵活性和通用性.例如,考虑这个通用代码:
template <template <typename...> Container, typename T>
void doStuff(const Container<T> & c)
{
typename Container<T>::size_type n = c.size();
// ...
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于任何容器模板(可以使用单个参数进行实例化),并且我们不会对代码的用户施加任何不必要的限制.
(在实践中,大多数大小类型将解析为std::size_t,通常是无符号类型,通常unsigned int或unsigned long- 但为什么我们必须知道?)
*)我不确定Java的相应语句是什么.
Java没有无符号整数类型,因此必须使用它们int.
相反,C++在适当的地方使用它们(负值是无意义的),规范的例子是类似数组的长度.
| 归档时间: |
|
| 查看次数: |
23155 次 |
| 最近记录: |