gpt4 book ai didi

c++ - 为什么 std::vector 构造函数通过复制接受初始值设定项列表?

转载 作者:行者123 更新时间:2023-12-03 02:21:00 25 4
gpt4 key购买 nike

当我试图理解现代 C++ 中不同类型的初始化时,我遇到了 std::vector<T> 的初始化。带有初始化列表。允许使用初始化列表数据结构进行初始化,例如 std::vector<T>应该有一个接受初始值设定项作为参数的构造函数。我观察到的是std::vector<T>通过复制接受初始化列表而不是作为引用,当我们有大量元素时通过复制接受可能会非常昂贵。为什么会这样,初始化列表将其作为拷贝而不是引用有什么特殊原因吗?

来自https://en.cppreference.com/w/cpp/container/vector/vector

vector( std::initializer_list<T> init, … ); (9)     (since C++11)

为什么不呢?

vector( std::initializer_list<T>& init, … );

最佳答案

std::initializer_list 不会复制底层对象。

尽你所能read here :

Copying a std::initializer_list does not copy the underlying objects.

所以它并没有真正浪费大量内存或时间。

关于c++ - 为什么 std::vector 构造函数通过复制接受初始值设定项列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60614963/

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