Некоторое время назад у меня была дискуссия с коллегой о том, как вставлять значения в STL maps. Я предпочел map[key] = value;
, потому что он чувствует себя естественно и понятно читать в то время как он предпочел map.insert(std::make_pair(key, value))
На картах STL лучше использовать карту :: insert, чем []?
Я просто спросил его, и ни один из нас не может вспомнить, почему вставка лучше, но я уверен, что это не просто стиль предпочтение скорее было технической причиной, такой как эффективность. В SGI STL reference просто сказано: «Строго говоря, эта функция-член не нужна: она существует только для удобства».
Может ли кто-нибудь сказать мне эту причину, или я просто мечтаю, что она есть?
Спасибо за все замечательные ответы - они были действительно полезны. Это отличная демонстрация переполнения стека в лучшем виде. Я был разорван относительно того, какой должен быть принятый ответ: netjeff более подробно описывает различное поведение, Грег Роджерс упомянул проблемы производительности. Хотел бы я пометить оба. – danio 2008-12-05 11:36:41
На самом деле, с C++ 11, вам, вероятно, лучше всего использовать [map :: emplace] (http://en.cppreference.com/w/cpp/container/map/emplace), который избегает двойной конструкции – einpoklum 2014-05-22 15:34:18
@ einpoklum: На самом деле, Скотт Майерс предлагает иначе в своем разговоре «Развивающийся поиск эффективного C++». – 2015-11-19 21:40:50