Здравствуйте, remark, Вы писали:
R>Шпаргалки по С++ контейнерам, интераторм, алгоритмам и строкам:
R>C++ Containers Cheat Sheet
R>C++ Iterators & Algorithms Cheat Sheet
R>Shifting from C to C++ strings
Синее на синем — это мощный дизайнерский ход
Тут нет одной очень важной информации — при каких операциях что инвалидируется.
А эту информацию знать полезно, когда выбираешь контейнер.
Например, у дека при вставке инвалидируются все итераторы, но (и это очень важно) ссылки на элементы (прямые ссылки, не в виде итераторов) инвалидируются только при вставке в середину, а если вставляешь в концы дека — ссылки сохраняются (но все итераторы все равно инвалидируются).
Аналогично для erase — если удаляешь из середины, то инвалидируется всё, а если с концов — то только ссылки и итераторы на удаленные элементы (ссылки и итераторы на остальные элемены остаются жить).
Такие вещи очень редко когда озвучиваются (хотя, естественно, все есть в стандарте), но в зависимости от того .что за приложение ты строишь, эта информация может оказаться критической для выбора и использования контейнера т.е. в случае дека, если нужно хранить ссылки на элементы, то это можно делать только в виде ссылок (итераторы не подходят, в отличие от, скажем, списка) и только если вставка-удаление идет на краях контейнера. А если бывает, пусть даже изредка, вставка в середину, то дек вообще не подходит и надо пользоваться, например, списком — у него таких проблем нет (но есть проблемы со скоростью вставки и скоростью доступа по номеру).
R>