zdravim , chcel by som sa spytat ci mi niekto vie poradit s nasledovnym problemom , vytvorim si set setov napriklad s intami takze set<set<int>> a; vytvorim si iterator set<set<int>>::iterator it = a.begin();
cez for cyklus zapisem jednotlive sety (set<int> b , set<int> c) ktore su naplnene naikymi cislami , a moja otazka znie , akym sposobom dodatocne vlozim niaku hodnotu do jedneho z toho setu ked uz za nachadza v sete setov ?
Priklad a.begin() mi ukazuje na jeden zo setov (b alebo c) a donho chcem insertnut dalsiu hodnotu , napr. int d =5; logicky ma napadlo ze spravim taketo nieco a.begin()->insert(d); popripade it->insert(d); ale ani jeden zo sposobov compilatorom neprejde
//autoeditácia príspevku (19 Nov 2016, 13:15)
Otazka c.2 ak mam classu A ktora ma v sebe string x , int z , viem niako nastavit set.insert tak aby mi to zoradovalo napriklad podla "z" ?
C++ set<set<Class>>
-
harrison314
Hardcore addict
- Príspevky: 8215
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: C++ set<set<Class>>
Na prvu otazku,
skus pouzit set<set<int>*>
2. Malo by stacit definovat nad triedou A "less then operator" a < b
skus pouzit set<set<int>*>
Kód: Vybrať všetko
void setTest()
{
std::set<std::set<int>*> setOfSet;
std::set<int> a;
a.insert(12);
a.insert(13);
std::set<int> b;
b.insert(120);
b.insert(130);
setOfSet.insert(&a);
setOfSet.insert(&b);
int addToAll = 45;
for(std::set<std::set<int>*>::iterator it = setOfSet.begin(); it!=setOfSet.end(); it++)
{
std::set<int> *tmp = (*it);
tmp->insert(addToAll);
}
for(std::set<std::set<int>*>::iterator it = setOfSet.begin(); it!=setOfSet.end(); it++)
{
std::cout<<"Next set"<<std::endl;
for(std::set<int>::iterator nit = (*it)->begin(); nit != (*it)->end(); nit++)
{
std::cout<<(*nit)<<std::endl;
}
}
}