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));
}
标签:c,c11,stl,move-semantics 来源: https://codeday.me/bug/20190926/1819455.html