其他分享
首页 > 其他分享> > c – 向量中的不可复制元素

c – 向量中的不可复制元素

作者:互联网

我有一个不可复制的类(即复制构造函数和赋值运算符标记为’删除’).我想将它们保存在std :: vector中.

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

我对新的初始化列表的了解&移动构造函数有点受限,这可能吗?

解决方法:

是的,你可以有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,c11,stl,move-semantics
来源: https://codeday.me/bug/20190926/1819455.html