Porównanie listy jednokierunkowej ze zmienna.

0

Witam chciałbym porównać zmienna int z zawartością listy jednokierunkowej. Problem tkwi w tym, że chciałbym pominąć 1 pozycje tej listy bo element który chce porównać z pozycjami na liście zawsze będzie taki sam jak pozycja nr 1.

6

Rozumiem, że przez listę jednokierunkową rozumiesz std::forward_list<int>.

W takim razie możesz wyszukać elementów identycznych z pierwszym bardzo prosto:

// assert(list.size() > 0);
auto val = *list.begin();
auto it = std::find(std::next(list.begin()), list.end(), val);
0

Przy tym rozwiązaniu sypie mi błędami jak głupi nie mogę też do niczego porównać tych wartości bo też sypie błędy spróbowałem tak:


bool Klasa::metoda() {
    for (list<Typ>::iterator iter = next(lista.begin()); iter != lista.end(); iter++){
        if (lista.begin() == iter) {
            return true;
        }
        else
            return false;
    }
}

tylko nadal mam problem.... mianowicie zawsze zwraca mi false mimo że debug pokazuje co innego i wiem że gdzieś dalej na liście znajduje się element taki sam jak na początku.

0

Wyrzuć blok else a return false umieść na końcu funkcji.

E: Faktycznie, tu nie ma derefencji. Ślepy ja.

0

Porównujesz iteratory, a nie wartości. Użyj dobrego rozwiązania zamiast kombinować jak koń pod górę.

PS: std::list to nie jest lista jednokierunkowa.

0

Hmm, kombinuje kombinuje i wykombinować nie moge... chociaż jakaś wskazówke jeszcze dostane?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0