C++ 展开作为内存传递的向量的大小

C++ 展开作为内存传递的向量的大小,c++,stl,vector,C++,Stl,Vector,我将向量传递给一个需要c数组的函数。它返回所填充的数据量(类似于fread)。有没有办法告诉我的向量改变它的大小以包含函数传入的量 当然,我要确保向量有容量()来保存那个数量的数据。hmm.. vector.resize(大小) ?容量只告诉您保留了多少内存,而不是向量的大小 您应该首先将大小调整到所需的最大大小: vec.resize(maxSizePossible); size_t len = cfunc(&(vec[0])); vec.resize(len); vector有一个

我将向量传递给一个需要c数组的函数。它返回所填充的数据量(类似于fread)。有没有办法告诉我的向量改变它的大小以包含函数传入的量

当然,我要确保向量有容量()来保存那个数量的数据。

hmm..
vector.resize(大小)

容量
只告诉您保留了多少内存,而不是向量的大小

您应该首先将大小调整到所需的最大大小:

vec.resize(maxSizePossible);
size_t len = cfunc(&(vec[0]));
vec.resize(len);

vector有一个resize()方法,其参数为新的size。因此,只需使用函数返回的数字调用它就可以了。

不,没有支持的方法可以“展开”向量,使其包含直接复制的额外值。依靠“容量”来分配您可以写入的非大小内存绝对不是您应该依赖的

您应该确保向量具有所需的空间量,方法是在调用函数之前调整大小,然后再调整大小到正确的值。例如

vector.resize(MAX_SIZE);
size_t items = write_array(&(vec[0]), MAX_SIZE)
vector.resize(items);

std::back\u inserter
可能是您需要的。假设您的输入函数能够使用迭代器,将其传递给
std::back\u inserter(myvector)
。这将
向后推_
写入迭代器的所有内容,并根据需要隐式调整向量大小