我有一个不可复制的类(即复制构造函数和赋值运算符被标记为“删除”)。我想将这些保存在 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));
}
关于c++ - vector 中的不可复制元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906014/