2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
1 | ||||||
Требуется собрать кучу object в один контейнер и искать их по object_name23.07.2014, 14:09. Показов 1724. Ответов 21
Метки нет (Все метки)
Пусть дана структура вида:
1) У object должен сохраниться доступ к своему object_name. 2) object_name не должен дублироваться в каких-то внутренних индексах контейнера (потому что возможен алгоритм обходящийся без дублирования). То есть, std::map хранящий ключ сортировки отдельно не подходит. 3) find(object_name) не должно требовать преобразования object_name из std::string в object (там some_data на 100500 байт). 4) Вставка нового элемента не должна делать ссылки на существующие элементы невалидными (отсортированный вектор object не подойдет). Реализуемо ли это какими-то готовыми библиотеками (например, boost)? И ясно, вроде, что алгоритмически это ничем принципиально не отличается от std::set. Но как я понимаю, find в std::set<object> принимает только аргумент типа object. Пусть даже есть operator< позволяющий сравнивать object напрямую с std::string.
0
|
23.07.2014, 14:09 | |
Ответы с готовыми решениями:
21
Собрать кучу файлов в один файл Excel VBA EXCEL: Собрать кучу файлов в один Как собрать файлы в кучу? Как собрать в кучу WebClient + WebView + Proxy? |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 14:26 | 2 |
Renji, Стоп. Причем тут set? Вы храните их в set? Если нет, то чем не нравится std::find?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
23.07.2014, 14:33 [ТС] | 3 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 14:45 | 4 |
Renji, В set до С++14 нет возможности вызвать find без объекта типа ключа.
Если не подходит отсортированный вектор, то почему не подойдет отсортированный лист к примеру?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
23.07.2014, 15:16 [ТС] | 5 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 15:35 | 7 |
Renji, Вообщем, подытожим, нет нормальных вариантов сделать поиск в set-е без создания объекта. В бусте тоже нет. Либо ждите С++14, либо идите на компромиссы с производительностью / ищите другие либы.
Добавлено через 1 минуту Tulosba, В таком раскладе насколько я понимаю нужно будет создавать при поиске новый Proxy и ptr должен будет быть создан.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
23.07.2014, 15:52 | 8 | |||||
ForEveR, с std::unique_ptr я, вероятно, погорячился. Вот такой вариант вижу в первом приближении:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 16:02 | 9 |
Tulosba, По-моему довольно слабое отличие от std::map, который автору не подходит или я ошибаюсь?
1
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||||||
23.07.2014, 16:09 | 10 | |||||
Как это нет, std::lower_bound ( ну и др. функции из этого семейства ).
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
23.07.2014, 16:12 | 11 |
Voivoid, А вот это верно. Что-то зря я отмел upper/lower_bound-ы.
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
23.07.2014, 16:20 | 13 |
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
23.07.2014, 16:22 [ТС] | 14 |
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
23.07.2014, 16:27 | 15 |
del
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
23.07.2014, 16:43 | 17 |
Ну, тогда boost::unordered_set как вариант, там методу find можно предикат передать
1
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
23.07.2014, 17:18 [ТС] | 18 | |||||
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
23.07.2014, 17:44 [ТС] | 20 | |||||
0
|
23.07.2014, 17:44 | |
23.07.2014, 17:44 | |
Помогаю со студенческими работами здесь
20
Notepad++ как собрать все ссылки со страницы в одну кучу? Чем дальше в лес, тем больше дров. Не соображу, как собрать в кучу Подскажите, где нужно искать конструктор класса Object? Объединить кучу запросов в один :) Один текст в кучу документов Разбить один m-файл на кучу маленьких m-файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |