Здравствуйте, IROV.., Вы писали:
IRO>Я скорее всего отвечал вот на этот закидон.
Выбирай выражения.
IRO>
IRO>В любом случае, обычно компилятор формальные проверки делает лучше, чем человек. Так что писать for( int i = 0; i < c.size(); i++) { body(); } НАДЁЖНЕЕ!
С чего ты взял, что c -- это std::vector, и вообще, что он из stl?
IRO>18900.4 — i < v.size(); IRO>8985.34 — i < i_end;
IRO>~2 раза
Так я за то самое и ратую, что надо с stl-контейнерами работать через итераторы, а не через индексы...
IRO>Ты стесняешься своей личности? facepalm
1) Слово "тограш" эмоционально окрашено, и вообще тут не уместно.
2) Моя личность -- офтопик в форуме по С++
IRO>Есть индустрия — купи-продай, а есть производство, вот ты самый низкий пласт — торгаш.
Ну тебе уже пора извиниться.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, IROV.., Вы писали:
IRO>>
IRO>>В любом случае, обычно компилятор формальные проверки делает лучше, чем человек. Так что писать for( int i = 0; i < c.size(); i++) { body(); } НАДЁЖНЕЕ!
E>С чего ты взял, что c -- это std::vector, и вообще, что он из stl?
С того что в моем случае, это не зависит от твоего "сьезда".
IRO>>18900.4 — i < v.size(); IRO>>8985.34 — i < i_end;
IRO>>~2 раза E>Так я за то самое и ратую, что надо с stl-контейнерами работать через итераторы, а не через индексы...
В любом случае, обычно компилятор формальные проверки делает лучше, чем человек. Так что писать for( int i = 0; i < c.size(); i++) { body(); } НАДЁЖНЕЕ!
Даже если у тебя size(){ return this->m_size;} то этот сайз будет всегда читаться из памяти, со всеми вытикающими бедами.
IRO>>Ты стесняешься своей личности? facepalm E>1) Слово "тограш" эмоционально окрашено, и вообще тут не уместно.
Ты уже посмотрел ролик про соузпарк и Тома Круза, который я тебе сбросил?
E>2) Моя личность -- офтопик в форуме по С++
Мой моск это не понял.
IRO>>Есть индустрия — купи-продай, а есть производство, вот ты самый низкий пласт — торгаш. E>Ну тебе уже пора извиниться.
Ты уже пожаловался модераторам? а то пацан сказал пацан не сделал, как то не помужски
З.Ы. и вообще я завязываю, моей целью не стоит напостить по 40 сообщений в день как у тебя
Здравствуйте, IROV.., Вы писали:
IRO>Даже если у тебя size(){ return this->m_size;} то этот сайз будет всегда читаться из памяти, со всеми вытикающими бедами.
Примеры, пожалуйста. А то с .end бед что-то нет особых...
E>>2) Моя личность -- офтопик в форуме по С++ IRO>Мой моск это не понял.
Сочувствую.
IRO>>>Есть индустрия — купи-продай, а есть производство, вот ты самый низкий пласт — торгаш. E>>Ну тебе уже пора извиниться. IRO>Ты уже пожаловался модераторам? а то пацан сказал пацан не сделал, как то не помужски
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
разве не извесный факт что есть как минимум две реализации
в одной size() — O(N)
в другой splice() — O(N)
одновремено O(C) для size и splice алгоритмов нет.
Для листа есть операция splice, потому что её можно выполнить очень эффективно — поменять значения десятка указателей, И ВСЁ, вне зависимости от количества элементов которые переносятся из одного контейнера в другой. Для вектора реализовать splice более эффективно чем в коде приведенном выше НЕЛЬЗЯ, поэтому splice для вектора не определяется. Кстати c list::splice не всё так чисто — либо list::length либо list::splice имеют сложность O(1), но не обе сразу.
Вот даже чьята цытата из гугла
я не волшебник, я только учусь!
Re[4]: Выносить вычисление длины выше цикла уже не нужно?
Здравствуйте, Tilir, Вы писали:
T>В случае же size() могут быть нюансы. Например в std::list при реализации предпочли splice за O(1), за что у них size вычисляется за O(N). Что при длинных списках и проверке в теле цикла может сказываться убийственно.
Сам был удивлен, но в C++0x std::list<>::size() должна выполняться за O(1).