我正在进行C ++练习,我必须实现一个表示包含字符串的向量的弱版本的类。其中一个要求是重载<和>运算符遵循词法比较规则。
我一直在阅读算法,但我根本不理解它或如何实现它。什么使矢量<比另一个?我从字符串中比较什么?私有变量是字符串*数组,大小和容量。
答案 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]
。
当序列是一系列字符(又名字符串)时,这是常见的字典顺序。但是相同的算法适用于任何可排序元素序列。