【发布时间】:2020-05-15 01:27:13
【问题描述】:
我正在做一个计算机科学项目,我使用 stl 库向量作为向量(表是我实现的一个类)。当我尝试使用擦除方法而没有在我的类表中实现 operator= 时,它失败了。然后我添加了 = 现在它可以工作了,但我不确定这是问题所在。是否必须在类中有 operator= 才能使用擦除方法? 这是一个示例代码:
vector<Table> tables;
Table t("1");
Table t2("2");
tables.push_back(t);
tables.push_back(t2);
tables.erase(tables.begin());//If no operator = is defined this gives problems
【问题讨论】:
-
从向量的前面或中间移除一个元素会移动内存中的剩余元素,因此它们必须是
MoveAssignable,这需要一个可以绑定到右值的复制赋值或移动赋值运算符. -
@cigien 我更新了我的评论