Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/158: Рейтинг темы: голосов - 158, средняя оценка - 4.77
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89

Множества set, проверка принадлежности множеству

15.04.2011, 12:28. Показов 29966. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, ув. форумчане Для лабораторной работы необходимо реализовать множество и выполнять проверку принадлежности какого-либо элемента заданному множеству. Нашел вариант задания через ассоциативный контейнер set, да вот не работал никогда с подобным, по сему возникли вопросы.

Вообще, лабораторная работа посвящена реализации конечного автомата, который в свою очередь играет роль лексического аналазитора (выделяет из кода на языке ЯВУ лексемы). Так вот, я открываю файл с исх. кодов, забираю оттуда первый (второй, третий и т.д.) символ, теперь мне необходимо определить, является ли этот символ буквой, цифрой или разделителем. Придумал разве что вариант с заданием каким-либо отдельно множеств букв и цифр и проверки а-ля паскаль или SQL "IN".

Примерно так, видимо, стоит задать множество букв:
C++
1
2
3
4
5
const int max_nums = 5;
char nums[max_nums] = {'a', 'b', 'c', 'd', 'e'};
 
set<char> Letters;
for( int i = 0; i < max_nums; ++i ) Letters.insert(nums[i]);
Как выполнить проверку на принадлежность элемента этому множеству? Может, стоит попробовать другие варианты? enum не предоставляет средств проверки принадлежности, по массиву бегать тоже не хочется.. посоветуйте оптимальный вариант Может, есть какие-либо ф-ии библиотеки для проверки на цифру, букву и т.д.?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2011, 12:28
Ответы с готовыми решениями:

Построение функции принадлежности нечеткого множества
Всем привет =))) Столкнулся с такой задачей: написать программу построения графика функции принадлежности нечеткого множества. У меня...

Проверка принадлежности
Даны два действительных числа x и y. Проверьте, принадлежит ли точка с координатами (x, y) заштрихованному квадрату (включая его границу)....

Проверка принадлежности к классу
В Java есть ф-я instanceof. Есть ли подобная в С++?

17
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
15.04.2011, 12:36
А чем стандартные функции для проверки не нравяцца?
isalnum
isalpha
iscntrl
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit
2
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
15.04.2011, 12:42  [ТС]
Спасибо, и все-таки они существуют, я так и знал)) сразу упрощает все и не надо задавать множества и что-то там проверять!
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
15.04.2011, 13:28
http://www.cplusplus.com/refer... ry/cctype/
2
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 11:42
Столкнулся с аналогичной ситуацией, только вместо банальной строки у меня в множестве объекты. Как быть в такой ситуации?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
20.02.2012, 11:48
Цитата Сообщение от Zerstroer Посмотреть сообщение
Как быть в такой ситуации?
Создать множество возможных типов объектов и потом искать в множестве/множествах.
А вообще, твой вопрос похож на этот:
Я написал "Hello world!", вроде работает. Как теперь её переделать в СУБД с поддержкой TSQL?
2
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 12:11
Спасет ли find в данной ситуации отца русской демократии?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.02.2012, 12:27
Zerstroer, По идее вполне.
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 12:30
Deviaphan, вообще-то ситуация будто бы и простая.
Есть контейнер set<MyClass> my_set с конечным числом объектов.
В программе мне нужно выявлять принадлежность объекта obj1 к my_set. Ищу наиболее простой способ это осуществить.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
20.02.2012, 12:30
Цитата Сообщение от ForEveR Посмотреть сообщение
А есть другие варианты?
Разумеется есть. Можно тип объекта хранить в самом объекте. Это ещё и самый эффективный и экономный способ. Если есть возможность добавить к объекту функцию GetType().
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 12:30
Deviaphan, вообще-то ситуация будто бы и простая.
Есть контейнер set<MyClass> my_set с конечным числом объектов.
В программе мне нужно выявлять принадлежность объекта obj1 к my_set. Ищу наиболее простой способ это осуществить.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
20.02.2012, 12:32
Цитата Сообщение от Zerstroer Посмотреть сообщение
принадлежность объекта obj1 к my_set
В таких условиях исключительно my_set.find(...);
Но "самоопределение" типа может быть более хорошим вариантом.
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 12:39
GetType() - для чего?
Меня не интересует содержимое объекта. Меня интересует только принадлежность его к определенной фиксированной группе объектов и всё. Решение, предложенное для Опы - меня не устраивает, так как Опа в множестве хранил примитивные типы.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
20.02.2012, 12:44
Цитата Сообщение от Zerstroer Посмотреть сообщение
для чего?
оК. Не GetType, а GetGroup. Т.е. объект может хранить в себе признак группы. Конечно, если один объект не может принадлежать нескольким группам.
У тебя всего два варианта, либо использовать множество объектов и проверять принадлежность этому множеству (не обязательно set, это может быть и Vector и хоть что), либо объект сам знает, к какому множеству он принадлежит и у него можно узнавать, а не принадлежит ли он этому множеству.
Первый способ подходит для любых объектов, даже если их код тебе не доступен. Второй способ более эффективный и по памяти и по скорости.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.02.2012, 13:05
Deviaphan, Вообщем-то извращение при использовании std::set.
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 13:10
Признак группы - не актуален.
Фиксированный список объектов задается в другом блоке программы.
В мой обработчик, попадает только набор объектов (в виде set) и сам объект.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.02.2012, 13:27
Zerstroer, Ну очевидно find.
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 7
20.02.2012, 14:28
тогда вот такой вопрос:
find() - возвращает итератор? Как его обработать? С NULL сравнивать?

Добавлено через 9 минут
Нашел!
Сравнивать нужно с .end() этого же множества!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2012, 14:28
Помогаю со студенческими работами здесь

Проверка принадлежности точки определенной плоскости
Никак не дойдет алгоритм решения задачи -.- Помогите.

Использование множества set
Задача состоит в следующем: необходимо заполнить массив числами от 1 до 49 случайным образом так, чтобы числа не повторялись. Идея состояла...

Множества. Проверка множества на наличие элемента в нем
Во многих задачах сталкиваюсь с одной и той же проблемой: Нужно создать множество элементов, добавлять в него новые элементы и проверять...

Сохранение и загрузка данных множества set
Добрый день. Пишу свое первое приложение, телефонная книга. Использую контейнер для хранения контактов set&lt;Phonebook&gt; Contacts, где...

Как очистить содержимое множества set?
после добавления множества в вектор нужно очистить множество для повторной записи туда set&lt;string&gt; str; как это сделать с помощью...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru