gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:06:56 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

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