当我试图理解现代 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/