gpt4 book ai didi

c++ - 当 std::vector 重新分配其内存数组时,使用的是复制构造函数还是移动构造函数?

转载 作者:行者123 更新时间:2023-12-03 10:04:40 25 4
gpt4 key购买 nike

当 std::vector 重新分配其内存数组时,使用什么样的复制/移动构造函数将元素复制/移动到新房子?

最佳答案

如果移动构造函数存在并且是 noexcept然后它被使用。否则使用复制构造函数。

使用可能抛出异常的移动构造函数是不可取的,因为可能会发生某些对象被移动到新存储,然后异常阻止其余对象被移动的情况。

cppreference.com 站点确实说,如果对象是 non-copyable ,但具有非 noexcept 移动构造函数,则它将使用该移动构造函数,如果抛出异常,则具有“未指定的行为”。我想这意味着元素可能会从 vector 中丢失。

关于c++ - 当 std::vector 重新分配其内存数组时,使用的是复制构造函数还是移动构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65022554/

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