Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 64
1

Set структур

19.02.2018, 20:03. Показов 6455. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Стоит задача сделать структуру, потом сделать множество структур А и В и сделать над ними операции такие как пересечение, объединение, дополнение.
Ругается на a.insert().Вроде сделал как написано в гайдах, но не работает.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<iostream>
#include<set>
#include<vector>
using namespace std;
struct photo
{
    int god;
    /*char firm;
    char model;
    int price;
    int zoom;
    char format;
    int ves;
    int pixels;*/
} pa[9];
 
void vvod(int k)
{
for(int i=0;i<k;i++)
{   
    cout<<"god?";
    cin>>pa[i].god;
/*  cout<<"firm?";
    cin>>pa[i].firm;
    cout<<"model";
    cin>>pa[i].model;
    cout<<"price?";
    cin>>pa[i].price;
    cout<<"zoom?";
    cin>>pa[i].zoom;
    cout<<"format?";
    cin>>pa[i].format;
    cout<<"ves?";
    cin>>pa[i].ves;
    cout<<"pixels?";
    cin>>pa[i].pixels;*/
}
    
}
void clear()
{
    system("cls");
}
 
int main()
{   
vvod(3);
clear();
 
std::set<photo> a,b;
a.insert(pa[0]);
 
 
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2018, 20:03
Ответы с готовыми решениями:

Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция
Есть код №1. Он выводить на экран позицию нужного мне слова (только если в середине 1 слово а не 2...

Поменять в настройке Character Set на Use Multy-Byte Character Set
При компиляции не видет файла .exe на форуме прочитал , что нужно поменять в настройке Character...

Структуры.Обработка массивов структур.Создать массив структур из 10-ти элементов
Создать массив структур из 10-ти элементов: &lt;Номер договора&gt;&lt;Фамилия клиента&gt;&lt;стоимость...

Блочная сортировка структур (Отсортировать массив структур по фамилии)
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив...

8
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2018, 20:41 2
Amdal, std::set использует std::less<Key>, как оператор сравнения по умолчанию, поэтому надо либо его реализовать либо предоставить свой предикат для сравнения структур.
0
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 64
19.02.2018, 20:44  [ТС] 3
outoftime, и как это делается?Добавить в структуру int key?
0
309 / 221 / 74
Регистрация: 23.05.2011
Сообщений: 981
19.02.2018, 22:13 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A;
 
namespace std
{
struct less<A>
{
   bool operator()(const A& a, const A& b){
        // тут сравнение.
        // true  - a<b
   }
}
}
Добавлено через 50 секунд
Либо просто сделать для структуры оператор <

Добавлено через 2 минуты
Либо при создание set:

C++
1
2
3
   std::set<A> our_set(comp = [](const A& a, const A& b){
      // тут код, который возращает true или false
   });
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.02.2018, 04:21 5
Цитата Сообщение от Amdal Посмотреть сообщение
Ругается на a.insert().Вроде сделал как написано в гайдах, но не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct photo
{
    //ну или какое вам там нужно условие сравнения двух объектов
    bool operator<(const photo&value)const{return god<value.god;}
    int god;
    /*char firm;
    char model;
    int price;
    int zoom;
    char format;
    int ves;
    int pixels;*/
}
0
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 64
20.02.2018, 17:14  [ТС] 6
Renji, в теории мне должно выдать при пересечении множеств А и В абсолютно одинаковые структуры.Т.е. мне надо по каждому свойству так сравнивать?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.02.2018, 17:33 7
Цитата Сообщение от Amdal Посмотреть сообщение
Renji, в теории мне должно выдать при пересечении множеств А и В абсолютно одинаковые структуры.Т.е. мне надо по каждому свойству так сравнивать?
Ага, в operator< нужно запихать сравнение всех свойств разом. Причем, так чтобы если A<B и B<C, то всегда A<C. То есть:
C++
1
2
3
(prop1!=value.prop1 && prop1<value.prop1) ||
(prop1==value.prop1 && prop2!=value.prop2 && prop2<value.prop2) ||
//ну и так далее, пока свойства не кончатся
Если оформить свойства как массив char и массив int, то можно сделать покрасивей. Ну или с шаблонами тоже можно красиво нашаманить, только вы потом не сможете объяснить преподу как эта хрень работает.

Добавлено через 5 минут
UPD Еще можно попробовать
C++
1
return memcmp(this,&value,sizeof(photo))<0;
Вообще говоря, не уверен что не будет проблем с padding между int и char забитым неизвестно чем, но для студенческой поделки сойдет.
0
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 64
20.02.2018, 18:58  [ТС] 8
Renji, а если эту ересь в си# реализовать?есть ли там уже готовые классы для множеств?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
20.02.2018, 20:53 9
Цитата Сообщение от Amdal Посмотреть сообщение
Renji, а если эту ересь в си# реализовать?есть ли там уже готовые классы для множеств?
Быстрый взгляд на документацию к SortedSet показывает что компаратор требуют и там. Очень сомневаюсь что этот компаратор вдруг сгенерируется автоматически.
0
20.02.2018, 20:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2018, 20:53
Помогаю со студенческими работами здесь

Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл
Можно ли присвоить одному массиву структур значение другого массива структур и записать его в файл?

Динамический массив структур в другом массиве структур
Можно ли реализовать динамический (или статический) массив структур в другом массиве структур?...

Массив структур, сохранение начала каждой из структур
Я создал такую структуру class Lancuch { public: char cos; Lancuch * nastepny; }; Lancuch...

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru