Lower_bound combinando cadeias erradas

Agora estou completamente confuso. Estou pesquisando o dia todo no Google e ainda não consigo entender por que esse código não funciona.

eu tenhovector dostructs e aquelesstructs terstring propriedade. Quando eu quero adicionar um novostruct para dentrovector, como primeiro eu tenho que verificar se umstruct com o mesmostring a propriedade já está lá. Se for, não será adicionado.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Try{
    string name;
    Try( string name) : name ( name ) { }
    bool                operator <                  ( const Try & a ) const
    {
        return name < a . name;
    }
};


int main(){

    vector<Try> vektor;
    Try *n;

    vektor . push_back( Try( "Prague" ) );

    n = new Try( "Brno" );


    vector<Try>::iterator it = lower_bound( vektor . begin(), vektor . end(), n -> name);

    if( it == vektor . end() ){
        cout << "not included" << endl;
        cout << it -> name << endl;
    }
    else
        cout << "included" << endl;

    return 0;
}

questionAnswers(1)

yourAnswerToTheQuestion