gpt4 book ai didi

c++ - 保留一个 reference_wrapper 对象的 vector ,这怎么可能?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:05 24 4
gpt4 key购买 nike

std::reference_wrapper不是默认可构造的。所以我不能写任何:

std::vector<std::reference_wrapper<int>> vec(10);
std::array<std::reference_wrapper<int>, 3> arr;

但是,令我惊讶的是,您可以调用 std::vector::reserve std::reference_wrapper 对象 vector 的成员函数并有效地改变其容量。

std::vector<std::reference_wrapper<int>> vec;  
vec.reserve(10);

Live Demo

这怎么可能,因为 std::reference_wrapper 没有默认构造函数?

最佳答案

reserve 仅分配足够容纳 N 个单元的未初始化内存块,而不会在推送 N 个新元素时导致重新分配。

reserve 不构建任何新元素。最坏的情况它只会移动/复制已经创建的。

关于c++ - 保留一个 reference_wrapper 对象的 vector ,这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302678/

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