Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Renji
2124 / 1562 / 476
Регистрация: 05.06.2014
Сообщений: 4,544
1

Требуется собрать кучу object в один контейнер и искать их по object_name

23.07.2014, 14:09. Просмотров 757. Ответов 21
Метки нет (Все метки)

Пусть дана структура вида:
C++
1
2
3
4
5
6
7
8
struct object
{
    object(const std::string&_object_name):object_name(_object_name){}
    bool operator<(const object&o)const{return object_name<o.object_name;}
    bool operator<(const std::string&str)const{return object_name<str;}
    std::string object_name;
    char some_data[100500];
};
Требуется собрать кучу object в один контейнер и искать их по object_name. При этом хочется соблюдать следующие условия:
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2014, 14:09
Ответы с готовыми решениями:

Как собрать файлы в кучу?
В книге Страуструпа для начинающих, в 8 главе квест, на создание заголовочного...

Чем дальше в лес, тем больше дров. Не соображу, как собрать в кучу
К окончанию курсов по С++ нам приурочили мини-дипломную работу. Сначала я...

Собрать кучу файлов в один файл Excel
Добрый день! И снова смиренно прошу советов гуру. Исходные данные: около 600...

VBA EXCEL: Собрать кучу файлов в один
В папке находится куча xls файлов. У всех у них одинаковая структура. Но она...

Как собрать в кучу WebClient + WebView + Proxy?
Привет. Не могу подключить прокси к вебклиенту. Помогите:help: WebClient...

21
Voivoid
709 / 281 / 16
Регистрация: 31.03.2013
Сообщений: 1,339
23.07.2014, 19:19 21
Цитата Сообщение от Renji Посмотреть сообщение
C++
1
2
3
4
struct hash_value{
 int operator()(const object&str)const{return str.object_name.size();}
 int operator()(const std::string&str)const{return str.size();}
};
воу-воу-воу, ты же надеюсь не считаешь так хэши и привел этот код только для примера уровня компилируется/не компилируется?
0
Renji
2124 / 1562 / 476
Регистрация: 05.06.2014
Сообщений: 4,544
23.07.2014, 19:23  [ТС] 22
воу-воу-воу, ты же надеюсь не считаешь так хэши и привел этот код только для примера уровня компилируется/не компилируется?
Разумеется. Для тестового примера нет смысла делать что-то более сложное чем "лишь бы хоть что-то считалось для галочки".
0
23.07.2014, 19:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2014, 19:23

Notepad++ как собрать все ссылки со страницы в одну кучу?
Добрый день! Как в Notepad++ можно собрать все ссылки, присутствующие на...

Подскажите, где нужно искать конструктор класса Object?
Всем привет! Изучаю java совсем недавно. Заинтересовал один фундаментальный...

Разбить один m-файл на кучу маленьких m-файлов
Здравствуйте. Я не новичок в Matlab. Однако просто раньше такого не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru