Odpovídáte na názor ke článku Podpora nového standardu C++ v překladačích.
[5] Iterátory nemusí pořád vyhodnocovat metodu end, stačí si iterátor na konec na začátku uložit. To je mimochodem doporučené (vyhodnocení end() pro std::list je docela pomalé) a tak to i dělá implementace toho range-based for cyklu:
for (auto it = c.begin(), end = c.end(); it != end; ++it) { ... }
Také není pravda, že v C++11 musí kontejnery implementovat metody begin a end, aby fungovaly v range-based for cyklu. Ten totiž používá funkce std::begin a std::end. Stačí je tedy pro váš kontejner (a vaše iterátory) přetížit.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 37 776×
Přečteno 26 422×
Přečteno 24 935×
Přečteno 21 279×
Přečteno 18 934×