2017-05-06 1 views
-1

Ich bin neu in C++, also ist das vielleicht etwas üblich.C++ bool Während auf Vektor

Ich habe ein std::vector<int> v;

Und ich will sehen, ob 0 in diesem Vektor ist. Ich denke, das funktioniert:

bool l = true; 
    i = 0; 
    while((l = true) && (i<v.size())) 
    { 
     if (v[i] == 0) l = false; 
     ++i; 
    } 

Aber selbst wenn mein Vektor 1,2,3,0,2,0 diese l ist true bleibt. Warum? Wie kann ich das beheben?

Antwort

2
while((l = true) && (i<v.size())) 

ist eigentlich eine Aufgabe. Sie sollten sicherer Vergleichscode

while((true == l) && (i<v.size()) 

Hinweis schreiben, dass in diesem Fall, wenn Sie versehentlich geben = statt == es wird anstelle der defekten Code ein Übersetzungsfehler sein.

+0

Sie sollten keines von beiden tun. Schreiben Sie einfach 'while (l && ...)' statt explizit mit 'true' zu ​​vergleichen. – interjay

+0

Eigentlich gibt es überhaupt keine Notwendigkeit in "l", Schreiben 'if (0 == v [i]) {break;}' würde das Ding tun. Aber ich möchte auf den sicheren Vergleich mit der Konstante hinweisen. – VTT

+0

@VTT: Ew, Yoda. Es ist nicht der 4. Mai mehr! –