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