Einen index in der for- Schleife auslassen



  • Ich hab folgendes Problem: für ein bestimmtes Element eines Vektors soll eine forschleife dieses Vektorelement und alle übrigen elemente an eine Funktion übergeben. Das bestimmte Vektorelement darf aber selbst nicht übergeben werden. Ich habe es so versucht:

    int AbbLen (const vector <string> &v, int i){
    
    int r = 0;
    
    for(int t=0; t<v.size();t!=i;++t){
    	if (EqualLen(v[i],v[t])>r)
            r = EqualLen(v[i],v[t]);
    }
    return r+1;
    
    }
    

    weil mir sonst nichts einfällt. Dies führt zu fehlern. Ohne t!=i wird ohne fehler Kompiliert, aber dann wird auch das element mit sich selbst verglichen, was ich ja nicht möchte.

    Edit: Ich idiot..Da muss && dazwischen und nicht ; Hab ich recht?



  • Wenn du '&&' schreibst, bricht die Schleife aber ab, sobald i = t ist.

    Du möchtest vermutlich das hier:

    for(int t = 0; t < v.size(); ++t)
    {
        if(i == t)
            continue;
        if(EqualLen(v[i], v[t]) > r)
            r = EqualLen(v[i], v[t]);
    }
    

    So läuft die Schleife dann einfach weiter, wenn i = t ist.



  • Ja, danke, das hab ich grad bei i=0 gemerkt, das sie garnicht ausgeführt wurde.



  • Wenn du '&&' schreibst, bricht die Schleife aber ab, sobald i = t ist.

    Außerdem hab ich mich hier vertan. Die Schleife liefe dann natürlich nur, wenn i = t ist!


Log in to reply