gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:58:20 24 4
gpt4 key购买 nike

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

它是RAII类,因此仅存储指针或对其的引用就不是我想要的。

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

最佳答案

是的,如果std::vector<NotCopyable>是可移动的,则可以使用NotCopyable:

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/59409714/

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