C++ 为向量擦除删除隐式赋值运算符?
我有两个向量,我希望比较它们并删除重复项。如果我有两个向量C++ 为向量擦除删除隐式赋值运算符?,c++,vector,operator-overloading,assignment-operator,C++,Vector,Operator Overloading,Assignment Operator,我有两个向量,我希望比较它们并删除重复项。如果我有两个向量vecA和vecB,我想删除vecA中出现在vecB中的元素。具体来说,我希望vecA被传递给一个方法,并在该方法中进行变异 #包括 #包括 #包括 M类{ 私人: const char COL[8]={'a','b','c','d','e','f','g','h'}; 公众: int aC、aR、dC、dR; M(整数a、整数b、整数c、整数d){ aC=a;aR=b;dC=c;dR=d; } 布尔运算符==(M&M){ bool sa
vecA
和vecB
,我想删除vecA
中出现在vecB
中的元素。具体来说,我希望vecA
被传递给一个方法,并在该方法中进行变异
#包括
#包括
#包括
M类{
私人:
const char COL[8]={'a','b','c','d','e','f','g','h'};
公众:
int aC、aR、dC、dR;
M(整数a、整数b、整数c、整数d){
aC=a;aR=b;dC=c;dR=d;
}
布尔运算符==(M&M){
bool sameC=(aC==m.aC&&dC==m.dC);
布尔-萨默=(aR==m.aR&&dR==m.dR);
返回(sameC和sameR);
}
};
B类{
公众:
std::vector foo(){
std::vec;
向量推回(M(1,3,2,4));
向量推回(M(1,2,3,4));
返回向量;
}
};
K类{
公众:
无效boo(B*B){
std::vec;
向量推回(M(1,2,3,4));
向量推回(M(2,3,4,5));
std::coutclassM
有一个非静态成员变量COL
,它是一个const
事物的数组,因此编译器无法复制数组的内容
假设您想使COL
成为静态的
,因此它不是每个M
对象的子对象?类M
有一个非静态成员变量COL
,该变量是常量
事物的数组,因此编译器无法复制数组的内容
大概你是想让COL
静态
,所以它不是每个M
对象的子对象?你确定你正在编译你发布的确切代码吗?顺便说一句,运行时逻辑有问题,v.erase
的索引在某些情况下是不允许的inputs@MichaelKenzel我的错误是,在做MRE时,我遗漏了一个有几行出错。我更新了代码以重现错误。@gator哦,您的结构有一个成员是const
。这意味着您无法修改该成员。因此,您无法分配给该成员。因此,隐式定义的赋值运算符被定义为deleted…您希望复制一个什么ssignment to do for this type!?您确定编译的代码与发布的代码完全一致吗?顺便说一句,存在运行时逻辑问题,v.erase
的索引在某些情况下超出范围inputs@MichaelKenzel我的错误是,在进行MRE时,我错误地省略了几行。我已经更新了代码以重现错误。@gator好的,您的结构具有const
的成员。该const
表示您无法修改该成员。因此,您无法分配给该成员。因此,隐式定义的赋值运算符被定义为已删除…您希望复制赋值对此类型做什么!?
Size before: 2
Size after: 1