gpt4 book ai didi

c++ - std::array 应该有 move 构造函数吗?

转载 作者:IT老高 更新时间:2023-10-28 21:49:22 25 4
gpt4 key购买 nike

在std::array上不能有效地实现 move (O(1)),那么为什么它有 move 构造函数呢?

最佳答案

std::array 有一个编译器生成的 move 构造函数,它允许将一个实例的所有元素 move 到另一个实例中。如果元素可有效 move 或仅可 move ,这将很方便:

#include <array>
#include <iostream>

struct Foo
{
Foo()=default;
Foo(Foo&&)
{
std::cout << "Foo(Foo&&)\n";
}
Foo& operator=(Foo&&)
{
std::cout << "operator=(Foo&&)\n";
return *this;
}
};

int main()
{
std::array<Foo, 10> a;
std::array<Foo, 10> b = std::move(a);
}

所以我想说 std::array 应该有一个 move 复制构造函数,特别是因为它是免费的。没有一个需要它被主动禁用,我看不出有什么好处。

关于c++ - std::array 应该有 move 构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105139/

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