Ваш вопрос можно обобщить следующим образом:
При работе с контейнерами STL, я предпочитаю использовать функции-члены или автономные функции из <algorithm>
, когда существуют функциональные эквиваленты?
Спросите 10 программистов, и вы получите 12 ответов.Но они попадают в 2 основных лагеря:
1) Предпочитают функции членов.Они разработаны специально для рассматриваемого контейнера и более эффективны, чем эквивалент <algorithm>
.
2) Предпочитают отдельно стоящие функции.Они более универсальны, и их использование легче поддерживать.
В конечном счете, вы должны решить сами.Любой вывод, к которому вы придете после того, как он придет к какому-либо аргументированному, исследованному размышлению, лучше, чем слепо следовать чьим-либо советам.
Но если вы просто хотите слепо следовать чьему-то совету, вот мой: предпочтите автономные функции.Да, они могут быть медленнее, чем функции-члены.И "медленный" - это такое грязное слово.Но 9 раз из 10 вас просто не волнует (или не должно волновать), насколько эффективнее один метод, чем другой.Большую часть времени, когда вам нужна коллекция, вы будете периодически добавлять несколько элементов, что-то делать, а затем делать.Иногда вам нужен сверхвысокопроизводительный поиск, вставка или удаление, но не всегда.Так что, если вы собираетесь спускаться с одной или другой стороны с помощью подхода «Предпочитаемый метод X», он должен быть ориентирован на случай general .И подход, который предпочитает методы-члены, кажется, склонен к оптимизации - и я называю это преждевременной микрооптимизацией.