gpt4 book ai didi

c++ - std::vector 和复制构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:57 28 4
gpt4 key购买 nike

vector<X> v;
X x;
v.push_back(x); v.push_back(x); v.push_back(x);

为什么这段代码调用类X 的复制构造函数6 次? (使用 g++ 4.7.2 STL)

拜托,我想知道准确地这个特定的 STL 在引擎盖下发生了什么。

最佳答案

当您使用push_back() 插入x 时,内存最终会重新分配以便为新元素腾出空间。然后必须使用复制构造函数 X(const X&) 复制已经插入的成员。

如果你插入

v.reserve(3);

至少前三个 push_back() 的重新分配被阻止,因此,将只有三个调用 X(const X&)

关于c++ - std::vector 和复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395984/

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