c++ Множества.Не получается провести операции над ними

210
15 марта 2018, 10:12

Задача такая.У меня есть структура.Надо создать А и В множества,в которые поместить эти структуры.И в конце сделать объединение, пересечение, вычитание этих множеств.Вот я сделал такую программу, но у меня после ввода данных структур прога завершается. Работу с множествами я сделал через , как я понял там есть функции готовые для множеств:set_difference - вычитание,set_union - обьедение,set_intersection - пересечение.

#include<iostream>
#include<set>
#include<vector>
#include <algorithm>
#include <iterator>
#include<tuple>
using namespace std;
struct photo
{ 
int god;
string firm;
string model;
int price;
int zoom;
string 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");
}
bool operator <(const photo& lhs, const photo& rhs)
{
return
    tie(lhs.god,lhs.firm,lhs.model,
        lhs.price,lhs.zoom,
        lhs.format,lhs.ves,lhs.pixels)
    <
    tie(rhs.god,rhs.firm,rhs.model,
        rhs.price,rhs.zoom,
        rhs.format,rhs.ves,rhs.pixels);
}
int main()
{   
vvod(3);
clear();
set<photo> a,b,c;
a.insert(pa[0]);
a.insert(pa[1]);
b.insert(pa[2]);
b.insert(pa[3]);
set_difference(a.begin(),a.end(), b.begin(),b.end(), inserter(c,c.begin()));
}
Answer 1

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

Вот пример простого кода, который выводит в stdout последовательно каждый элемент вашего множества:

for (const photo& each : c)
{
    std::cout << each << std::endl;
}

Чтобы это заработало, вам необходимо определить оператор вывода в поток вашей структуры photo. Например так:

std::ostream& operator<< (std::ostream& dest, const photo& src)
{
    dest << src.god << ", "
         << src.firm << ", "
         << src.model << ", "
         << src.price << ", "
         << src.zoom << ", "
         << src.format << ", "
         << src.ves << ", "
         << src.pixels;
    return dest;
}
READ ALSO
Не работает функция toupper

Не работает функция toupper

Программа компилируется но текст не переводитПричём не работает что с подключенными библиотеками ctype что без них

210
Easy Blockchain

Easy Blockchain

Всем приветПомогите найти ошибку

228
Error during artifact deployment. Spring Security

Error during artifact deployment. Spring Security

При старте приложения на сервере Tomcat происходит ошибка

190
Обновление страницы в java servlet (jsp)

Обновление страницы в java servlet (jsp)

Вопрос в следующем, есть java сервлет и скриплет (jsp) с javaScriptНа сервере происходит обновление в файловой системе, а на jsp это отображается отправляя...

263