kb.'s blog

By kb., 12 years ago, In Russian

Здравствуйте! Я думаю, что почти все программисты, пишущие на C++, регулярно используют и STL. Библиотека, безусловно, замечательная, но в ней сокрыто немало тонкостей, которые могут неожиданно вылезти на контесте.


Например, совсем недавно я узнал, что vector<bool> хранит элементы в виде байтов, в каждом из которых содержится по 8 bool'ов, из-за чего не очень быстро (очень не быстро?) работает. Или, например, что вектор в Visual Studio расширяется в 1.5 раза, а вектор в g++ - в 2 раза. Поправьте меня, если я не прав.

Я думаю, что опытные кодеры знают куда больше трюков, и предлагаю в этой теме обменяться опытом использования STL. Интересуют как общие для обоих компиляторов вещи, так и специфичные, потому что контесты приходится зачастую писать в разных средах.

Для начала мне хотелось бы узнать две вещи:
1) За сколько работают методы begin, end, size у сложных структур типо set, map.
2) Как писать лучше и быстрее: set.find(elem) != set.end() или set.count(elem) == 0
3) Правда ли, что stack, queue и deque очень медленно работают?
  • Vote: I like it
  • +14
  • Vote: I do not like it