La comparaison de chaînes, c++

J'ai une question:

Disons qu'il y a deux std::strings et je veux les comparer, il y a la possibilité d'utiliser le compare() fonction de la string classe mais j'ai aussi remarqué qu'il est possible à l'aide de simples < > != opérateurs (les deux cas sont possibles même si je ne comprend pas le <string> de la bibliothèque).
Quelqu'un peut m'expliquer pourquoi le compare() fonction existe si une comparaison peut être faite à l'aide de simples opérateurs?

btw j'utilise Code::Blocks 13.12
voici un exemple de mon code:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::getline;

int main()
{
    string temp1, temp2;
    cout << "Enter first word: ";
    getline (cin,temp1);
    cout << "Enter second word: ";
    getline (cin,temp2);
    cout << "First word: " << temp1 << endl << "Second word: " << temp2 << endl;
    if (temp1 > temp2)
    {
        cout << "One" << endl;
    }
    if (temp1.compare(temp2) < 0)
    {
        cout << "Two" << endl;
    }
    return 0;
}    
Il est parfois plus utile d'avoir un positif, nul ou négatif.

OriginalL'auteur Medvednic | 2014-07-25