[ *Maya* @ 15.09.2005. 09:41 ] @
Pozdrav svima. :)

Ono što sam željela napraviti je, dakle, incijalizirati STL kontejner sa elementima iz standardnog inputa :

Code:

std::deque<int> c(std::istream_iterator<int>(std::cin),std::istream_iterator<int>());


Međutim, dobivam obavijest o sintaksnoj grešci. Koristim GCC/G++. Zbog čega ?

Unaprijed se zahvaljujem na odgovoru.
[ tosa @ 15.09.2005. 10:55 ] @
probaj da uklonis std:: iz std::cin, a mozes i na ostalim mestima

Code:

using namespace std;
deque<int> c(istream_iterator<int>(cin),istream_iterator<int>());

[ danio @ 15.09.2005. 12:28 ] @
Meni radi tocno kao sto si ti napisao samo moras imati odgovrajuce include: <iterator> i <stack>. Neznam u kojem include-u je dequeue ali izgleda da ga stack koristiti :)

Jos jedna stvar. Kraj iteratora je malo cudan. Izgleda da ucitavanje zvrsava samo ako se desi neka greska. Meni bi se vise svidjalo ako bi zavrsavalo nekim konkretnim simbolom ili signalom. Isto bi bilo dobro razlikovati ako je doslo do greske ili ako je sve dobro ucitano...
[ leka @ 15.09.2005. 12:34 ] @
Majo (ili kako se vec zoves), sledeci put, kada pricas o gresci koju javlja kompajler, onda bi bilo dobro da pejstujes sve sto kompajler javlja, da bi mogli da "provalimo" gde je greska. Takodje bi bilo jako dobro kada bi pejstovala kompletan kod, a ne samo liniju gde Ti mislis da je greska. :)
[ Dragi Tata @ 15.09.2005. 13:19 ] @
Citat:
danio: Jos jedna stvar. Kraj iteratora je malo cudan. Izgleda da ucitavanje zvrsava samo ako se desi neka greska. Meni bi se vise svidjalo ako bi zavrsavalo nekim konkretnim simbolom ili signalom. Isto bi bilo dobro razlikovati ako je doslo do greske ili ako je sve dobro ucitano...


Jok, kraj je kad naiđe na eof.
[ danio @ 15.09.2005. 13:31 ] @
Kraj je isto i kad naidje na gresku (np. na slova umjesto brojki). Kako razlikovati jedno od drugog?
[ leka @ 15.09.2005. 13:48 ] @
danio, napisi prosto programce i proveri svoju tvrdnju...
[ Dragi Tata @ 15.09.2005. 14:03 ] @
Citat:
danio: Kraj je isto i kad naidje na gresku (np. na slova umjesto brojki). Kako razlikovati jedno od drugog?


Mislim ovako:

Code:

if (cin.eof()) 
//onda je eof
else
//greska


Iskreno, nisam probao, ali čiča Bjarne je dao jedan sličan primer:

http://www.research.att.com/~bs/bs_faq2.html#simple-program
[ *Maya* @ 15.09.2005. 14:33 ] @
Možda nekome zatreba. :)

Dakle, ovaj način 'UVIJEK'(isključujući neke verzije GCC/G++) radi kako treba :

Code:

std::deque<int> c((std::istream_iterator<int>(std::cin)),(std::istream_iterator<int>()));


Eh, sad. Ovaj način ponekad radi, a ponekad ne:

Code:

std::deque<int> c(std::istream_iterator<int>(std::cin),std::istream_iterator<int>());




I na kraju način koji je meni trebao, jer koristim GCC/G++(verziju 3.3).

Code:

std::deque<int> c((std::istream_iterator<int>(std::cin)),std::istream_iterator<int>());


Zbog čega ? Nažalost, moje znanje nije bilo dostatno za potpuno razumijevanje 'rješenja'. :)


Srdačni pozdrav,

Maya





[Ovu poruku je menjao *Maya* dana 15.09.2005. u 15:49 GMT+1]
[ danio @ 15.09.2005. 19:22 ] @
Citat:
leka: danio, napisi prosto programce i proveri svoju tvrdnju...


Jesam, zato i pitam.

Citat:
Dragi Tata: Mislim ovako:

Code:

if (cin.eof()) 
//onda je eof
else
//greska


Iskreno, nisam probao, ali čiča Bjarne je dao jedan sličan primer:

http://www.research.att.com/~bs/bs_faq2.html#simple-program


Mislim da je to dobar nacin. Hvala....
[ leka @ 16.09.2005. 06:14 ] @
Sto se loseg inputa tice, tu ne moze puno pomoci eof(), za ispitivanje toga sluze bad(), good(), fail(), rdstate() metodi... No, mislim da smo odlutali daleko od teme...