Использование std::move
из
:
#include
#include
void foo(std::string && s) { std::cout << s; }
void bar(std::string && s) { foo(std::move(s)); }
int main() {
bar("abc");
return 0;
}
std::move
- это на самом деле просто немного синтаксического сахара , но это распространенный способ пересылки ссылки на rvalue .
Проверьте этот сайт: Сравнения Сортировки с Анимациями
Короткий ответ: Быстрая сортировка
Более длинный ответ: вышеупомянутый сайт покажет Вам достоинства и недостатки каждого алгоритма с некоторыми изящными анимациями.
короткий ответ, там является не лучшим все вокруг вида (кроме Вас, знал что, так как Вы сказали, что 80% времени :)), но Быстрая сортировка (или 3 Пути Быстрая сортировка), вероятно, будет лучшим общим алгоритмом, который Вы могли использовать.
Это - алгоритм, используемый по умолчанию для Списков в .NET, таким образом, можно просто звонить .Sort
, если то, что Вы имеете, уже находится в списке.
существует псевдокод веб-сайта, я указал на Вас на вышеупомянутый, если Вы хотите видеть, как реализовать это.
Что Вы пытаетесь отсортировать? Есть ли любая причина не использовать:
List<T>.Sort() ?
я уверен, что это использует QuickSort, и Вы не должны волноваться о совершении никаких ошибок кодирования. Можно реализовать IComparable для изменения то, на чем Вы хотите отсортировать.
, Если все Ваши данные не умещаются в памяти... хорошо, Вы прочь к гонкам с Сортировкой слиянием или чем-то вдоль тех строк.
попробуйте quicksort: http://www.codeproject.com/KB/recipes/QuickSort_gen.aspx