您好,我试图了解如何优化将元素从向量移动到另一个检查是否在途中调用copy或move构造器的情况。
但是,当我尝试从移到另一个向量List<Node> node
的{{1}} std::vector
中删除元素时,编译器会抱怨以下消息:
v1
这是代码
v2
答案 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上直播