当前位置:  开发笔记 > 编程语言 > 正文

(重新)使用初始值将矢量初始化为特定长度

如何解决《(重新)使用初始值将矢量初始化为特定长度》经验,为你挑选了2个好方法。

作为函数参数,我得到一个vector& vec具有未知长度和值的输出向量,因此是非常量的.我想将此向量初始化为具有全零的特定长度n.

这会奏效

vec.clear();
vec.resize( n, 0.0 );

这也可行:

vec.resize( n );
vec.assign( n, 0.0 );

第二个更有效(因为没有涉及内存释放/分配)?有没有更有效的方法来做到这一点?



1> James Hopkin..:
std::vector(n).swap(vec);

在此之后,vec保证具有大小和容量n,所有值均为0.0.

也许是自C++ 11以来更惯用的方式

vec.assign(n, 0.);
vec.shrink_to_fit();

第二行可选.在vec以多于n元素开始的情况下,是否调用shrink_to_fit是在保持比执行重新分配所需的更多内存之间的权衡.



2> Chris Jester..:
std::vector(n).swap(vec);

这具有实际压缩矢量的优点.(在你的第一个例子中,clear()不保证压缩你的矢量.)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有