Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Cobs Forumaš(ica)
Pridružen/a: 21. 01. 2008. (13:32:15) Postovi: (206)16
Spol:
Lokacija: Geto
|
Postano: 18:24 čet, 7. 4. 2011 Naslov: |
|
|
[quote="Ally"][quote]Implementirajte:
1. konstruktore: prazan konstruktor, konstruktor koji stvara skup s jednim elemetom tipa T, [b]konstruktor koji STL spremnik pretvara u skup elementa[/b][/quote]
A kak da se ovo zadnje protumači?[/quote]
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu )
Ally (napisa): | Citat: | Implementirajte:
1. konstruktore: prazan konstruktor, konstruktor koji stvara skup s jednim elemetom tipa T, konstruktor koji STL spremnik pretvara u skup elementa |
A kak da se ovo zadnje protumači? |
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu )
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
Postano: 9:06 pet, 8. 4. 2011 Naslov: |
|
|
[quote="Cobs"]
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu )[/quote]
Da, tak sam i ja to skužila ;)
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu..
Cobs (napisa): |
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu ) |
Da, tak sam i ja to skužila
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu..
_________________ I just wanna dance..
|
|
[Vrh] |
|
sagi Forumaš(ica)
Pridružen/a: 30. 10. 2010. (14:46:39) Postovi: (16)16
|
|
[Vrh] |
|
tidus Forumaš(ica)
Pridružen/a: 16. 02. 2009. (12:47:59) Postovi: (A5)16
Spol:
|
Postano: 20:19 pet, 8. 4. 2011 Naslov: |
|
|
[quote="Ally"][quote="Cobs"]
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu )[/quote]
Da, tak sam i ja to skužila ;)
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu..[/quote]
Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom :x
Ally (napisa): | Cobs (napisa): |
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu ) |
Da, tak sam i ja to skužila
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu.. |
Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
Postano: 20:45 pet, 8. 4. 2011 Naslov: |
|
|
[quote="sagi"]Ally jesi slala mail asistentu? dobila odgovor? :)[/quote]
Mejl je poslan. Kad dođe odgovor, tu ću ga napisati ;)
[quote]Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom [/quote]
Joj, hvala, ova informacija/ideja je jako korisna. Probat ću nekaj s tim :)
I da, ista stvar. Ja sam prvo počela pisati preko liste, i onda sam skužila da se nijedan STL ne smije koristiti. Pa sam se bacila na čitanje skripte iz SPA :?
sagi (napisa): | Ally jesi slala mail asistentu? dobila odgovor? |
Mejl je poslan. Kad dođe odgovor, tu ću ga napisati
Citat: | Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom |
Joj, hvala, ova informacija/ideja je jako korisna. Probat ću nekaj s tim
I da, ista stvar. Ja sam prvo počela pisati preko liste, i onda sam skužila da se nijedan STL ne smije koristiti. Pa sam se bacila na čitanje skripte iz SPA
_________________ I just wanna dance..
|
|
[Vrh] |
|
tidus Forumaš(ica)
Pridružen/a: 16. 02. 2009. (12:47:59) Postovi: (A5)16
Spol:
|
Postano: 22:46 pet, 8. 4. 2011 Naslov: |
|
|
Imamo implementirati parametrizirani SET s parametrom T. Podrazumjeva li se da T može biti neki STL spremnik, npr. vector? Tj. mora li naš program moći baratati sa SETom vector-a? Ili će T biti samo neki osnovni tip podataka (int, string, char, itd.)? Imam problema sa ispisivanjem u slučaju SETa nekih spremnika, pa pitam.
Imamo implementirati parametrizirani SET s parametrom T. Podrazumjeva li se da T može biti neki STL spremnik, npr. vector? Tj. mora li naš program moći baratati sa SETom vector-a? Ili će T biti samo neki osnovni tip podataka (int, string, char, itd.)? Imam problema sa ispisivanjem u slučaju SETa nekih spremnika, pa pitam.
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
|
[Vrh] |
|
glava Forumaš(ica)
Pridružen/a: 28. 03. 2007. (18:48:16) Postovi: (89)16
Spol:
|
|
[Vrh] |
|
anjcho Forumaš(ica)
Pridružen/a: 19. 10. 2008. (12:38:54) Postovi: (6)16
Spol:
Lokacija: Jarun :)
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
|
[Vrh] |
|
lorozic Forumaš(ica)
Pridružen/a: 08. 12. 2008. (17:11:14) Postovi: (50)16
Spol:
|
Postano: 22:18 pon, 11. 4. 2011 Naslov: |
|
|
[quote="Ally"][quote="anjcho"]Meni jos uvijek nije jasno koji vrag da radim s komplementom:) Jel ima ko kakvu ideju?:)[/quote]
Haha, ok, barem nisam jedina. Jer ni ja nemam apsolutno nikakvu ideju.
[quote]Prilikom implementacije skupa ne smijete koristiti STL spremnike. [/quote]
To znači da u konstruktoru koji STL spremnik pretvara u moj skup ne smijemo koristiti npr. size(); , begin(); i end(); ? Jer ja znam samo pomoću toga napisati :S[/quote]
Pa smijemo ih koristiti jer pripadaju spremniku kojeg koristimo. Logicno mi je da se pod "ne koristiti STL" mislilo iskljucivo na implementiranje samog SET-a, npr da nemremo koristiti automatsko alociranje od vectora ili automatsko pazenje na "duplice" iz seta.
Mene zanima dal smijemo pretpostaviti da set sadrzi objekte koji imaju definiran uredjaj.
[size=9][color=#999999]Added after 5 minutes:[/color][/size]
[quote="glava"]Smijemo li mi tu koristiti malloc i free umjesto new i delete? Pitam jer bi mi trebala i funkcija realloc. Postoji li mozda neki nacin u c++-u za tu realokaciju?
hvala[/quote]
Mislim da mi je asistent rekel da C++ ima i svoj malloc i slicno, al nisam siguran.
U svakom slucaju mozes polje realocirati pomocu par new i delete naredbi. Prvo alociras memorije kolko ti treba nakon dodavanja novih elemenata u polje, onda iz starog polja prekopiras elemente u novo polje, prekopiras i nove elemente, a onda pomocu delete[] brises staro polje. samo pazi da kad brises polje pises "delete[]" a ne samo "delete", i to je to.
Ally (napisa): | anjcho (napisa): | Meni jos uvijek nije jasno koji vrag da radim s komplementom:) Jel ima ko kakvu ideju? |
Haha, ok, barem nisam jedina. Jer ni ja nemam apsolutno nikakvu ideju.
Citat: | Prilikom implementacije skupa ne smijete koristiti STL spremnike. |
To znači da u konstruktoru koji STL spremnik pretvara u moj skup ne smijemo koristiti npr. size(); , begin(); i end(); ? Jer ja znam samo pomoću toga napisati :S |
Pa smijemo ih koristiti jer pripadaju spremniku kojeg koristimo. Logicno mi je da se pod "ne koristiti STL" mislilo iskljucivo na implementiranje samog SET-a, npr da nemremo koristiti automatsko alociranje od vectora ili automatsko pazenje na "duplice" iz seta.
Mene zanima dal smijemo pretpostaviti da set sadrzi objekte koji imaju definiran uredjaj.
Added after 5 minutes:
glava (napisa): | Smijemo li mi tu koristiti malloc i free umjesto new i delete? Pitam jer bi mi trebala i funkcija realloc. Postoji li mozda neki nacin u c++-u za tu realokaciju?
hvala |
Mislim da mi je asistent rekel da C++ ima i svoj malloc i slicno, al nisam siguran.
U svakom slucaju mozes polje realocirati pomocu par new i delete naredbi. Prvo alociras memorije kolko ti treba nakon dodavanja novih elemenata u polje, onda iz starog polja prekopiras elemente u novo polje, prekopiras i nove elemente, a onda pomocu delete[] brises staro polje. samo pazi da kad brises polje pises "delete[]" a ne samo "delete", i to je to.
|
|
[Vrh] |
|
HB Forumaš(ica)
Pridružen/a: 06. 01. 2011. (10:31:56) Postovi: (A)16
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
Postano: 12:30 uto, 12. 4. 2011 Naslov: |
|
|
[quote="glava"]Smijemo li mi tu koristiti malloc i free umjesto new i delete? Pitam jer bi mi trebala i funkcija realloc. Postoji li mozda neki nacin u c++-u za tu realokaciju?
hvala[/quote]
Odgovor je [b]NE[/b]. I to stvarno dramatično boldano.
Razlog je što malloc i free ne pozivaju odgovarajuće konstruktore i destruktore, new i delete to rade.
Da imate [code:1]Set<vector<int> > s;[/code:1], onda postoji šansa da negdje u unutarnjoj implementaciji ne pozoveš destruktor.
Možeš koristiti malloc/free akko si siguran/na da objekt koji uništavaš je POD odnosno da nema on niti njegovi članovi ništa sa destruktorom.
[size=9][color=#999999]Added after 14 minutes:[/color][/size]
[quote="tidus"][quote="Ally"][quote="Cobs"]
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu )[/quote]
Da, tak sam i ja to skužila ;)
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu..[/quote]
Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom :x[/quote]
Jedna implementacija je:
[code:1]#include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename U>
Set(const vector<U> &v)
{
for (size_t i = 0; i < v.size(); ++i)
cout << v[i] << " ";
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1);
return 0;
}[/code:1]
No očito je problem što se ne zna unaprijed koji je to spremnik u pitanju. Da bi se izbjeglo definiranje hrpe konstruktora za trenutne klase, postoji jednostavno rješenje koje koriste i sami STL kontejneri:[code:1]
#include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first != last)
{
cout << v[i] << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
return 0;
}[/code:1]
Nigdje u STL-u se ne prima cijeli kontejner nego uvijek par [pocetak, kraj>
[size=9][color=#999999]Added after 9 minutes:[/color][/size]
[quote="Ally"]A nitko još nema ideju za komplement?[/quote]
Ovo je relativno jednostavno. Dodaš bool varijablu u set:
[code:1]bool isComplement;[/code:1]
I sad elementi koje čuvaš u Set-u su ti oni elementi koji [i]nisu[/i] u Set-u pa moraš prilikom usporedbe paziti kako ćeš uspoređivat komplementarne skupove s običnim.
glava (napisa): | Smijemo li mi tu koristiti malloc i free umjesto new i delete? Pitam jer bi mi trebala i funkcija realloc. Postoji li mozda neki nacin u c++-u za tu realokaciju?
hvala |
Odgovor je NE. I to stvarno dramatično boldano.
Razlog je što malloc i free ne pozivaju odgovarajuće konstruktore i destruktore, new i delete to rade.
Da imate Kod: | Set<vector<int> > s; | , onda postoji šansa da negdje u unutarnjoj implementaciji ne pozoveš destruktor.
Možeš koristiti malloc/free akko si siguran/na da objekt koji uništavaš je POD odnosno da nema on niti njegovi članovi ništa sa destruktorom.
Added after 14 minutes:
tidus (napisa): | Ally (napisa): | Cobs (napisa): |
Ja bi to ovak sebi protumačio...
Ak imaš neki STL spremnik ( vector, set, multiset, list... ) - označit ćemo taj spremnik sa SPREMNIK, a klasa skup koji sam ja napravio za dz nek se zove Moj_Skup, onda bi konstruktor bio tipa:
Moj_Skup X( SPREMNIK );
tj. onaj skup koji sam ja napravio za zadacu bi trebao imati konstruktor koji će primiti taj spremnik i sve njegove elemente poslagati u skup ( Moj_Skup ). ( Al tak bi si ja protumačio, tak da ako si u nedoumici pošalji mail asistentu ) |
Da, tak sam i ja to skužila
Al (nadam se da ovo nebu ispalo preglupo pitanje) buni me to koji STL spremnik da ja "pretvaram" u svoj skup? Postoji dosta STL spremnika.. Nekak mi je najlogičnije da, ako koristim implementaciju preko vektora, napravim konstruktor za vector? Ili treba nešto (ak postoji) opčenito?
Hmm, mislim da mi je najbolje da pošaljem mail asistentu.. |
Mozes za opceniti STL spremnik koristiti template<class tip>, samo onda kada zelis prijaviti iterator na opceniti STL spremnik moras pisati typename tip::iterator i;
Ne radi bez typename. Mozda si to znala, al meni je stvaralo probleme...
I bas sam glup nisam procitao da se nesmiju koristiti STL spremnici i poceo pisati tako da radim s vectorom |
Jedna implementacija je:
Kod: | #include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename U>
Set(const vector<U> &v)
{
for (size_t i = 0; i < v.size(); ++i)
cout << v[i] << " ";
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1);
return 0;
} |
No očito je problem što se ne zna unaprijed koji je to spremnik u pitanju. Da bi se izbjeglo definiranje hrpe konstruktora za trenutne klase, postoji jednostavno rješenje koje koriste i sami STL kontejneri: Kod: |
#include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first != last)
{
cout << v[i] << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
return 0;
} |
Nigdje u STL-u se ne prima cijeli kontejner nego uvijek par [pocetak, kraj>
Added after 9 minutes:
Ally (napisa): | A nitko još nema ideju za komplement? |
Ovo je relativno jednostavno. Dodaš bool varijablu u set:
I sad elementi koje čuvaš u Set-u su ti oni elementi koji nisu u Set-u pa moraš prilikom usporedbe paziti kako ćeš uspoređivat komplementarne skupove s običnim.
_________________ -- space available for rent --
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
Postano: 14:08 uto, 12. 4. 2011 Naslov: |
|
|
[quote="pecina"]
No očito je problem što se ne zna unaprijed koji je to spremnik u pitanju. Da bi se izbjeglo definiranje hrpe konstruktora za trenutne klase, postoji jednostavno rješenje koje koriste i sami STL kontejneri:[code:1]
#include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first != last)
{
cout << v[i] << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
return 0;
}[/code:1]
[/quote]
To ne radi.
Al ovak radi:
[code:1]template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
int i;
while (first != last)
{
cout <<*first << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
scanf("%%");
return 0;
}[/code:1]
Ali ni ovaj ni moj konstruktor ne rade ako npr želim list<vector<int>> pospremit u svoj skup, vec samo za "jednostavne" STL spremnike.
pecina (napisa): |
No očito je problem što se ne zna unaprijed koji je to spremnik u pitanju. Da bi se izbjeglo definiranje hrpe konstruktora za trenutne klase, postoji jednostavno rješenje koje koriste i sami STL kontejneri: Kod: |
#include <vector>
#include <list>
#include <iostream>
using namespace std;
template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first != last)
{
cout << v[i] << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
return 0;
} |
|
To ne radi.
Al ovak radi:
Kod: | template <typename T>
struct Set
{
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
int i;
while (first != last)
{
cout <<*first << " ";
first++;
}
cout << endl;
}
};
int main()
{
vector<int> vec1;
Set<float> S1(vec1.begin(), vec1.end());
list<int> l1;
vector<int> vfroml(l1.begin(), l1.end());
scanf("%%");
return 0;
} |
Ali ni ovaj ni moj konstruktor ne rade ako npr želim list<vector<int>> pospremit u svoj skup, vec samo za "jednostavne" STL spremnike.
_________________ I just wanna dance..
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
|
[Vrh] |
|
Ally Forumaš(ica)
Pridružen/a: 15. 04. 2008. (19:57:23) Postovi: (7F)16
Spol:
|
|
[Vrh] |
|
pecina Forumaš(ica)
Pridružen/a: 19. 01. 2005. (14:15:23) Postovi: (157)16
Spol:
Lokacija: Happily traveling through space since 1986!
|
Postano: 14:26 uto, 12. 4. 2011 Naslov: |
|
|
[quote="Ally"][quote]Kakva ti je definicija Set-a u koji želiš pospremiti list<vector<int> >?[/quote]
Pa trebala bi biti Set<vector<int>>, kaj ne?[/quote]Zašto bi onda bio problem? Ti operiraš s tipom [b]T[/b], bio on int ili vector<int> ili Set<vector<int> >, svejedno je. Treba raditi generički. Npr:
[code:1]template <typename T>
class Set
{
public:
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first++ != last)
insert(*first);
}
private:
void insert(T const& t)
{
// ... logika
}
};
int main()
{
vector<int> vec1;
Set<int> S1(vec1.begin(), vec1.end());
return 0;
}
[/code:1]
Ally (napisa): | Citat: | Kakva ti je definicija Set-a u koji želiš pospremiti list<vector<int> >? |
Pa trebala bi biti Set<vector<int>>, kaj ne? | Zašto bi onda bio problem? Ti operiraš s tipom T, bio on int ili vector<int> ili Set<vector<int> >, svejedno je. Treba raditi generički. Npr:
Kod: | template <typename T>
class Set
{
public:
template<typename _FwdIter>
Set(_FwdIter first, _FwdIter last)
{
while (first++ != last)
insert(*first);
}
private:
void insert(T const& t)
{
// ... logika
}
};
int main()
{
vector<int> vec1;
Set<int> S1(vec1.begin(), vec1.end());
return 0;
}
|
_________________ -- space available for rent --
|
|
[Vrh] |
|
finalni Forumaš(ica)
Pridružen/a: 04. 08. 2007. (11:48:53) Postovi: (10D)16
Spol:
Lokacija: Bloodbuzz Zagreb
|
|
[Vrh] |
|
lorozic Forumaš(ica)
Pridružen/a: 08. 12. 2008. (17:11:14) Postovi: (50)16
Spol:
|
|
[Vrh] |
|
|