移出某些元素后无法从向量中擦除

时间:2019-09-22 11:32:29

标签: c++ c++11 move stdvector

您好,我试图了解如何优化将元素从向量移动到另一个检查是否在途中调用copy或move构造器的情况。

但是,当我尝试从移到另一个向量List<Node> node的{​​{1}} std::vector中删除元素时,编译器会抱怨以下消息:

v1

这是代码

v2

1 个答案:

答案 0 :(得分:0)

您需要检查的是three/five/zero的规则。

您需要一个副本分配运算符来编译您的代码:

Foo& operator=(const Foo& other) {
    this->name = other.name;
    this->index = other.index;
    std::cout << "Calling copy assignment " << other.name << other.index << std::endl;
    return *this;
}

和移动分配运算符遵守5规则。

godbolt上直播