因此,我创建了一个名为Tuples的新类,其中Tuples接收一个称为tupleVector的字符串 vector 。然后,我创建了一组元组,这意味着我需要重载对元素进行排序并禁止重复的操作符。

两个问题:

  • 需要重载哪个运算符?我是否超载
  • 假设我必须在Tuples类中执行此重载(以便可以在其他类中使用Tuple的集合),以下代码正确吗?
    include "Tuples.h"
    Tuples::Tuples(vector<string> tuple){
        tupleVector = tuple;
    }
    vector<string> Tuples::getStrings()
    {
        return tupleVector;
    }
    bool Tuples::operator<(Tuples& other){
        return this->tupleVector<other.tupleVector;
    }
    bool Tuples::operator==(const Tuples& other)const{
        return this->tupleVector==other.tupleVector;
    }
    Tuples::~Tuples() {
        // TODO Auto-generated destructor stub
    }
    
  • 最佳答案

    您只需要提供operator<即可。容器通过反身比较两个项目来检查它们是否相等:如果为!(a<b) && !(b<a),则它们相等

    10-04 14:28