![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
XProgammer |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 27.10.2011 Репутация: нет Всего: нет |
Привет))
Можно ли в C++ (или STL) для структуры
задать массив A такого типа
и потом обращаться по индексу любого из полей, например
или
Т.е. мне нужно поставить взаимно-однозначное соответствие между разными объектами, и потом иметь возможность используя в качестве индекса любое поле, узнать остальные поставленные ему в соответствие значения, а не тупо перебором и сравнением |
||||||||
|
|||||||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Задать такой массив можно.
Но индексироваться строкой нельзя. При индексировании целым числом получишь структру в массиве с соответствующим номером, а не с полем нужного значения. Сравнивать строки с помощью == можно если только они заданы строковыми константами в одном файле. Обычно для этого нужно strcmp() |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
Boost Multi-index
Добавлено @ 17:52
В С++ (STL) для этого имеется std::string. Добавлено через 3 минуты и 56 секунд В STL есть контейнер std::map - реализация словаря, позволяет хранить данные типа ключ-значение вышеупомянутый boost::multi_index - обобщение словаря до мульти-словаря, как раз как Вы желаете Это сообщение отредактировал(а) baldina - 24.9.2012, 17:52 |
|||
|
||||
KaZepKa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 29.10.2011 Репутация: нет Всего: нет |
а можно и свой класс описать и сделать как хочется
|
|||
|
||||
XProgammer |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 27.10.2011 Репутация: нет Всего: нет |
спасибо большое, посмотрю))
свой класс непонятно как)) |
||||
|
|||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
свой запаришься писать. для каждого ключа (поля в структуре) нужно иметь свой индекс - отсортированный массив указателей (или двоичное дерево поиска) или хеш-таблицу. по индексу можно быстро найти нужный. для простоты в качестве индекса можно использовать std::map или std::hash_map, но останется проблема синхронизации, которую придется решать самостоятельно. так что готовое имхо наиболее быстрый путь |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |