Как бы побыстрее отсортировать вектор?
От: ser_gunya  
Дата: 15.06.09 13:49
Оценка:
Есть следующий код, состоящий из двух частей
Часть первая:
typedef std::vector< std::pair<int, int> > TVector;

// на этапе создания вектора мы знаем предварительный размер, который как правило больше реального
TVector Vector;
Vector.reserve(PrereservedAmount);;

// заполняем Vector несколькими десятками тысяч элементов (в том числе и повторяющимися) методом циклического добавления содержимого небольшого вектора
Vector.insert(some_Vector.begin(), some_Vector.end());

и вторая:
// сортируем вектор
std::sort(Vector.begin(), Vector.end());
// на выходе нужна отсортированая последовательность уникальных элементов
TVector::iterator EndOfUniqueRange = std::unique(Vector.begin(), Vector.end());

В результате регулярное добавление занимает ~15% времени выполнения, сортировка ~60%.
Какие можно предпринять шаги чтобы ускорить все это хозяйство?

спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.