2012-04-14 2 views
0

Das Programm verfügt über ein Element in einem sortierten Array finden und implementieren diese Funktion Vorlage:STL-Algorithmus Funktionsschablonen

bool find(T *p, T value, int &index=null) 

ich einen Teil abgeschlossen hat, aber wenn ich versuche, den Null-Teil zu tun, all meine Nummer geht zu Nullen. Ich weiß auch nicht, wie man den Index implementiert. Kann mir bitte jemand helfen?

int main() 
{ 
    vector<int> numbers; 
    vector<int>::iterator iter; 

    for (int x = 0; x < 15; x++) 
     numbers.push_back(x); 

    cout << "The numbers in the vector are:\n"; 
    for (iter = numbers.begin(); iter != numbers.end(); iter++) 
     cout << *iter << " "; 
    cout << endl << endl; 

    iter = find(numbers.begin(), numbers.end(), 5); 
    cout << *iter << endl; 
+9

Sie können keine Nullreferenz haben. Wenn Sie so etwas brauchen, verwenden Sie einen Zeiger. – Dani

+1

Ihre Funktionsvorlage gibt nur einen Zeiger und keine Angabe darüber, wie viele Elemente sich an dieser Adresse befinden. Wie wird das funktionieren? – Blastfurnace

+1

Verwenden Sie einfach den eingebauten 'lower_bound()' Algorithmus. –

Antwort

0

Der Prototyp

bool find(T *p, T value, int &index=null). 

ist der Funktionsaufruf ist

iter = find(numbers.begin(), numbers.end(), 5); 

Konzeptionell tun diesem Spiel? Gibt end() einen Wert zurück? Ist 5 ein Index?

+0

Sie können eine nicht konstante Referenz auch nicht an ein Literal binden. Ich nehme an, das 'Finden' hier ist' std :: find', aber anscheinend ist das nicht das, was das OP will. – Philipp

Verwandte Themen