gpt4 book ai didi

c++ - vector 中的不可复制元素

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

我有一个不可复制的类(即复制构造函数和赋值运算符被标记为“删除”)。我想将这些保存在 std::vector 中。

它是一个 RAII 类,所以简单地存储指针或对它的引用不是我想要的。

我对新的初始化列表和 move 构造函数的了解有些有限,这可能吗?

最佳答案

是的,您可以拥有 std::vector<NotCopyable>如果 NotCopyable是可 move 的:

struct NotCopyable
{
NotCopyable() = default;
NotCopyable(const NotCopyable&) = delete;
NotCopyable& operator = (const NotCopyable&) = delete;

NotCopyable(NotCopyable&&) = default;
NotCopyable& operator = (NotCopyable&&) = default;
};

int main()
{
std::vector<NotCopyable> v;
NotCopyable nc;

v.push_back(NotCopyable{});
v.emplace_back();
v.push_back(std::move(nc));
}

Live example .

关于c++ - vector 中的不可复制元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906014/

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