(который, в конце концов, упорядочен), проблема в том, что это займет больше, чем постоянная сложность
вык писать такие циклы:
for (std::size_t index = 0; index < foo.size(); index++)
{
// Do stuff with foo[index].
}
Но когда я вижу циклы итераторов в чужом коде, они выглядят так:
for (Foo::Iterator iterator = foo.begin(); iterator != foo.end(); iterator++)
{
// Do stuff with *Iterator.
}
Я нахожуiterator != foo.end()
быть зачетным. Это также может быть опасно, еслиiterator
увеличивается более чем на один.
Кажется, более «правильно» использоватьiterator < foo.end()
, но я никогда не вижу этого в реальном коде. Почему нет?