Использует ли сортировка STL подкачку или двоичное копирование?

У меня возникли проблемы с поиском хорошего ответа на этот вопрос. По какой-то причине я думал, что сортировка STL будет реализована с использованием подкачки для лучшей поддержки сложных типов, но когда я немного покопался в коде, оказалось, что он на самом деле делает двоичную копию. Может кто-нибудь это подтвердить? Я предполагаю, что двоичную копию на самом деле предпочтительнее обменивать.

Дополнительный вопрос : Реализованы ли какие-либо алгоритмы STL или операции с контейнерами с использованием подкачки? (Очевидно, помимо std :: swap .) Я хочу знать, когда целесообразно реализовать собственный обмен для сложных типов.

Изменить: я спрашиваю, есть ли у вас что-то вроде:

class MyClass {
  vector<int> vec_data;
  int a;
  int b;
}
vector<MyClass> my_vec;
sort(my_vec.begin(), my_vec.end(), MyCustomCompare);

Я хочу убедиться, что сортировка не вызывает конструктор копирования вектора, что произойдет, если вы вызвали конструктор копирования по умолчанию для MyData . Следовательно, мой вопрос - это сортировка, вызывающая своп, копирование, назначение и т. Д.

10
задан Jason T. 21 November 2011 в 23:13
поделиться