std::reference_wrapper
不是默认可构造的。所以我不能写任何以下内容:
std::vector<std::reference_wrapper<int>> vec(10);
std::array<std::reference_wrapper<int>, 3> arr;
但是,令我惊讶的是,您可以调用
std::vector::reserve
对象 vector 的 std::reference_wrapper
成员函数并有效地更改其容量。std::vector<std::reference_wrapper<int>> vec;
vec.reserve(10);
Live Demo
由于
std::reference_wrapper
没有默认构造函数,这怎么可能? 最佳答案
reserve
仅分配足够的未初始化内存块以适合N
单元,而不会在推送N
新元素时引起重新分配。reserve
不构建任何新元素。最坏的情况是它只会移动/复制已经创建的拷贝。