gpt4 book ai didi

c++ - 填充通过引用传递的 vector 的正确方法

转载 作者:行者123 更新时间:2023-11-28 00:31:30 26 4
gpt4 key购买 nike

假设您正在实现一个函数,该函数接收对要填充的 vector 的引用:

func(std::vector <T> & vec) { ...

现在,该函数将调整大小并填充该 vector ,但我们真的不知道该 vector 之前包含什么,或者它的容量是多少。为了真正安全,可以这样写:

vec.clear(); 
vec.resize(...);
vec.shrink_to_fit();

这真的有必要,还是有更好的方法?

最佳答案

只要您将覆盖每个元素(或者不介意未触及的元素是垃圾),您就不需要在调整大小之前清除 vector 。异常(exception)情况是,如果您想使用提供的默认值填充整个 vector 以调整大小,在这种情况下您确实需要清除它。

通常您通过引用传递 vector 以利用现有的保留容量来节省内存分配。使用 shr​​ink_to_fit 违背了这个目的,因为 vector 容量可以上下移动(如果编译器为缩小做任何事情)。如果你想最小化内存,按值返回一个新的 vector 。

关于c++ - 填充通过引用传递的 vector 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com