|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.02.2018, 19:41 | #1 |
Новичок
Джуниор
Регистрация: 19.02.2018
Сообщений: 2
|
set множества и операции
вот я создал структуру photo и переменную этой структуры массив pa[i].Как мне теперь сделать множество структур?
я пишу: set<photo> a,b; a.insert(pa[0]); А оно выдаёт ошибку в файле stl_set.h Что я не так делаю? И как еще потом сделать объединение, пересечение, дополнение? Последний раз редактировалось Siniy_pled; 19.02.2018 в 20:02. |
19.02.2018, 21:40 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
20.02.2018, 03:48 | #3 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
Не знаю этой темы, но думаю, для использования структуры в качестве элемента множества, необходимо для типа структуры определить операторы сравнения.
|
20.02.2018, 11:22 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Так вроде бы структуры и не могут быть элементами множества. А почему не массив структур ?
http://kvodo.ru/sets-in-pascal.html http://mirznanii.com/a/114939/tipy-dannykh-v-paskale |
21.02.2018, 02:37 | #5 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
Для множества можно использовать любые типы и структуры, если для них определена хотя бы операция "<".
Теоретически, элементам множества не надо быть скалярами. А операция сравнения больше/меньше необходима только технически - для эффективной реализации операций над множествами: объединение, пересечение, вычет, не знаю что там ещё есть или должно быть. |
21.02.2018, 18:23 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Да, я не учел, что вопрос в разделе С/С++, и привел ссылку на Паскаль. В Си с множествами дел не имел.
|
23.02.2018, 16:56 | #7 |
Новичок
Джуниор
Регистрация: 19.02.2018
Сообщений: 2
|
вот такое я сделал.Сделал кое-как компаратор, но операции не работаю над множествами
Код:
|
23.02.2018, 17:00 | #8 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
А в Си и нет множеств. set - это контейнер из STL C++.
|
24.02.2018, 23:12 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
|
25.02.2018, 09:29 | #10 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
А в С++ это только название похожее. На самом деле это хеш с уникальным ключем и без значения.
Действия над множествами нужно реализовывать самостоятельно. Но...есть набор алгоритмов, которые работают с любыми контейнерами вообще (не только set), например http://www.cplusplus.com/reference/a..._intersection/ Для вашего кастомного класса/структуры, возможно стоит определить хеширующую функцию хорошую. Последний раз редактировалось alexzk; 25.02.2018 в 09:34. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
тип Set(множества)(Pascal) | fozjka | Помощь студентам | 0 | 22.05.2013 17:26 |
Множества (Set) | zeil94 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 14.12.2012 07:50 |
Pascal ABC. Множества. Сформировать два множества из M и N элементов случайным образом. | powersej | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 13.12.2012 21:08 |
Pascal ABC. Множества. Сформировать два множества из M и N элементов случайным образом. | powersej | Помощь студентам | 0 | 13.12.2012 20:58 |
Множества и операции над ними.Паскаль | ШМЫГА | Фриланс | 7 | 27.02.2011 09:18 |