Бысрый способ получить 100 наименьших элементов, из 10 000 000 000 записей или более |
Здравствуйте, гость ( Вход | Регистрация )
Бысрый способ получить 100 наименьших элементов, из 10 000 000 000 записей или более |
ViGOur |
21.8.2010, 17:39
Сообщение
#1
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Задача получить 100 наименьших элементов из массива в 10 000 000 000 записей, записи это числа.
Как это сделать, побыстрей? |
|
|
Алексей1153 |
24.8.2010, 18:54
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
1)
Цитата if (n >= v.size ()) "size()" имеет тип unsigned int , а "n" у тебя - int 2) Передавать и возвращать контейнеры лучше по ссылке (а то нехилое по объёму копирование будет иногда происходить) Поэтому, лучше не возвращать из функции тип std::list<T> , а объявить переменную вне функции, а потом передать ссылку для заполнения контейнера в функции 3)объявление переменных-контейнеров частенько громоздкие - лучше определить синоним typedef std::list<T> td_LIST; это также поможет вносить быстрые исправления, если что. Но в данном примере это не сильно существенно - код небольшой 4) проверяй v.size()!=0 для любых контейнеров перед получением итератора или ссылки (.begin(),end(),[x] и так далее) 5) нет нужды делать вот так (и вообще нельзя) .... eEnd = v.end (); eIt != eEnd...... надо .... ; eIt != v.end()...... Цитата list_out.insert (v.begin (), v.begin () + n);//<< не получится так вставить из вектора в список. Надо - либо одинаковый тип делать, либо цикл Раскрывающийся текст
Сообщение отредактировал Алексей1153 - 24.8.2010, 20:07 |
|
|
panter_dsd |
25.8.2010, 6:40
Сообщение
#3
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Алексей1153, что-то не компилируется твой код.
|
|
|
Текстовая версия | Сейчас: 24.11.2024, 11:44 |