作为函数参数,我得到一个 vector<double>& vec
(一个输出 vector ,因此是非常量)具有未知的长度和值。我想将此 vector 初始化为全为零的特定长度 n。
这会起作用
vec.clear();
vec.resize( n, 0.0 );
这也行得通:
vec.resize( n );
vec.assign( n, 0.0 );
第二种效率更高吗(因为不涉及内存释放/分配)?有没有更有效的方法来做到这一点?
最佳答案
std::vector<double>(n).swap(vec);
在此之后,保证 vec 的大小和容量为 n,所有值为 0.0。
也许自 C++11 以来更惯用的方式是
vec.assign(n, 0.);
vec.shrink_to_fit();
第二行可选。在 vec
以超过 n
个元素开始的情况下,是否调用 shrink_to_fit
是在保留比现在更多的内存之间的权衡需要与执行重新分配。
关于c++ - (重新)将 vector 初始化为具有初始值的特定长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/173995/