[我们知道,std :: vector在像std::vector vect(n)
或empty_vect.resize(n)
那样初始化时,不仅分配了所需的内存量,而且还使用默认值对其进行了初始化(即调用默认构造函数)。这会导致不必要的初始化,尤其是当我有一个整数数组并且我想用一些不能通过任何向量构造函数提供的特定值来填充它时。
另一方面,容量是像empty_vect.reserve(n)
一样在调用中分配内存,但是在这种情况下vector仍然为空。因此,size()
返回0
,empty()
返回true
,operator[]
生成异常。
现在,请查看代码:
{ // My scope starts here...
std::vector<int> vect;
vect.reserve(n);
int *data = vect.data();
// Here I know the size 'n' and I also have data pointer so I can use it as a regular array.
// ...
} // Here ends my scope, so vector is destroyed, memory is released.
问题是“是否可以将其用作数组”是一个安全的假设吗?
不管有什么争论,我只是对以上问题感到好奇。无论如何,关于参数:
不,您不能使用它。