如何从字面上比较两个字符串向量?

时间:2017-10-12 04:19:19

标签: c++ algorithm oop

我正在进行C ++练习,我必须实现一个表示包含字符串的向量的弱版本的类。其中一个要求是重载<和>运算符遵循词法比较规则。

我一直在阅读算法,但我根本不理解它或如何实现它。什么使矢量<比另一个?我从字符串中比较什么?私有变量是字符串*数组,大小和容量。

2 个答案:

答案 0 :(得分:0)

您可以在'<'中使用strcmp(字符串a,字符串b)重载实现。

class ClassName{
  /*
  variables

  constructors and methods
  */

  bool operator<(ClassName obj){
    ClassName obj1;
    if(strcmp(obj.str , obj1.str)<0)  //less than zero as we are overloading "<" operator
      return true;     //read - www.cplusplus.com/reference/cstring/strcmp

    return false;
  }
};

同样地&#34;&gt;&#34;运算符可以重载

答案 1 :(得分:0)

两个序列之间的词法比较的想法是,您首先按照它们的第一个元素对序列进行排序,如果需要,然后按第二个元素对它们进行排序。也就是说,如果是a[0]<b[0],那么a<b。如果是a[0]>b[0],那么a>b。但是,如果a[0]==b[0],则会查看a[1]b[1]

当序列是一系列字符(又名字符串)时,这是常见的字典顺序。但是相同的算法适用于任何可排序元素序列。