Med tanke på två strängar, hur man kontrollerar om de två strängarna är lika eller inte.
Exempel:
Input : ABCD, XYZ Output : ABCD is not equal to XYZ XYZ is greater than ABCD Input : Geeks, forGeeks Output : Geeks is not equal to forGeeks forGeeks is greater than Geeks>
Detta problem kan lösas med någon av följande två metoder
- C++ Relationella operatörer
CPP
java listbox
// CPP code to implement relational> // operators on string objects> #include> using> namespace> std;> void> relationalOperation(string s1, string s2)> {> >if> (s1 != s2)> >{> >cout << s1 <<>' is not equal to '> << s2 << endl;> >if> (s1>s2)> >cout << s1 <<>' is greater than '> << s2 << endl;> >else> >cout << s2 <<>' is greater than '> << s1 << endl;> >}> >else> >cout << s1 <<>' is equal to '> << s2 << endl;> }> // Driver code> int> main()> {> >string s1(>'Geeks'>);> >string s2(>'forGeeks'>);> >relationalOperation(s1, s2);> >string s3(>'Geeks'>);> >string s4(>'Geeks'>);> >relationalOperation(s3, s4);> >return> 0;> }> |
>
>Produktion
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Tidskomplexitet: O(min(n,m)) där n och m är längden på strängarna.
Hjälputrymme: O(max(n,m)) där n och m är längden på strängarna.
Detta beror på att när strängen skickas i funktionen skapar den en kopia av sig själv i stack.
- std:: Jämför()
CPP
imessage-spel med Android
// CPP code perform relational> // operation using compare function> #include> using> namespace> std;> void> compareFunction(string s1, string s2)> {> >// comparing both using inbuilt function> >int> x = s1.compare(s2);> >if> (x != 0) {> >cout << s1> ><<>' is not equal to '> ><< s2 << endl;> >if> (x>0)> >cout << s1> ><<>' is greater than '> ><< s2 << endl;> >else> >cout << s2> ><<>' is greater than '> ><< s1 << endl;> >}> >else> >cout << s1 <<>' is equal to '> << s2 << endl;> }> // Driver Code> int> main()> {> >string s1(>'Geeks'>);> >string s2(>'forGeeks'>);> >compareFunction(s1, s2);> >string s3(>'Geeks'>);> >string s4(>'Geeks'>);> >compareFunction(s3, s4);> >return> 0;> }> |
>
>Produktion
Geeks is not equal to forGeeks forGeeks is greater than Geeks Geeks is equal to Geeks>
Tidskomplexitet: O(min(n,m)) där n och m är längden på strängarna.
Hjälputrymme: O(max(n,m)) där n och m är längden på strängarna.
Detta beror på att när strängen skickas i funktionen skapar den en kopia av sig själv i stack.
Skillnader mellan C++ relationsoperatorer och compare() :-
- compare() returnerar en int, medan relationsoperatorer returnerar booleskt värde, det vill säga antingen sant eller falskt.
- En enskild relationsoperator är unik för en viss operation, medan compare() kan utföra många olika operationer ensamma, baserat på typen av argument som skickas.
- Vi kan jämföra vilken delsträng som helst vid vilken position som helst i en given sträng med compare(), vilket annars kräver den långa proceduren med ord-för-ord-extraktion av sträng för jämförelse med relationsoperatorer.
Exempel:-
- Använda compare()
// Compare 3 characters from 3rd position // (or index 2) of str1 with 3 characters // from 4th position of str2. if (str1.compare(2, 3, str2, 3, 3) == 0) cout<<'Equal'; else cout<<'Not equal';>
- Använder Relationell operator
for (i = 2, j = 3; i <= 5 && j <= 6; i++, j++) { if (s1[i] != s2[j]) break; } if (i == 6 && j == 7) cout << 'Equal'; else cout << 'Not equal';> Exemplet ovan visar tydligt hur jämföra() minskar massor av extra bearbetning, därför är det tillrådligt att använda det medan du utför jämförelse av delsträngar vid någon position, annars fungerar båda nästan på samma sätt.