C++ 展开作为内存传递的向量的大小
我将向量传递给一个需要c数组的函数。它返回所填充的数据量(类似于fread)。有没有办法告诉我的向量改变它的大小以包含函数传入的量 当然,我要确保向量有容量()来保存那个数量的数据。hmm..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有一个
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)
。这将向后推_
写入迭代器的所有内容,并根据需要隐式调整向量大小