swapследует использовать вместоiter_swap, который был включен в стандарт С++ для обратной совместимости.
Большинство алгоритмов STL работают на диапазонах итераторов. Поэтому имеет смысл используйте
iter_swapпри замене элементов в этих диапазонах, поскольку это цель - замена элементов, на которые указывают два итератора. Эта позволяет оптимизировать для node основанных последовательностей, таких какstd::list, посредством чего узлы просто перемотаны, а не фактически заменяемые данные.
Итак, какой из них правильный? Должен ли я использовать iter_swap, или я должен использовать swap? (Является iter_swap только для обратной совместимости?) Почему?