/ / Różnica między końcem kontenera a iteratorem wskazującym na przedmiot w środku. C ++ - c ++, iterator

Różnica między końcem kontenera a iteratorem wskazującym na element wewnątrz. C ++ - c ++, iterator

list<int> l;
list<int>::iterator start;
list<int>::iterator end;
list<int>::iterator mid;
for (int i = 0; i < 100; ++i)
l.push_back(i);
start= l.begin();
end= l.end();
mid = start+ (end- start) / 2;
cout << *mid << endl;

Ok, mam teraz konkretny przykład. end-start nie kompiluje się.

Odpowiedzi:

3 dla odpowiedzi № 1

list iterator jest Bidirectional iterator, it"s notIterator dostępu losowego. You can"t calloperator - na nim.

możesz po prostu spróbować użyć std::advance aby przenieść iterator na środek kontenera

std::advance(ble.begin(), ble.size()/2);