Ciao ragazzi..oggi mi sono messo a studiare un po' STL. Mi sono visto come funzionano vector, list e deque. Però ho avuto dei problmi nel lavorare con le stringhe: non ho capito come posso fare a stamparle...Qualche suggerimento?
Ciao ragazzi..oggi mi sono messo a studiare un po' STL. Mi sono visto come funzionano vector, list e deque. Però ho avuto dei problmi nel lavorare con le stringhe: non ho capito come posso fare a stamparle...Qualche suggerimento?
Non funziona il "cout"??
posta il codice e l'errore altrimenti brancoliamo nel buio..
In realta coi vector mi funziona, solo che mi da tutti questi errori nonostante esce quello che io ho inserito nel vector.
ERRORI:codice:#include <vector> #include <iostream> using namespace std; int main() { vector<string> a; a.push_back("Prova"); a.push_back("vettore"); vector<string>::iterator i; for(i=a.begin(); i<a.end(); ++i) { cout << *i; } return 0; }
C:\Documents and Settings\riccardoizzo\Documenti\Esempi C++\STL2\2\main.cpp(28) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std: :char_traits<char>,std::allocator<char> > const *,std::basic_string<char,std::char_traits<char>,st d::a
llocator<char> >,std::basic_string<char,std::char_traits<char>,st d::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,st d::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
C:\Documents and Settings\riccardoizzo\Documenti\Esempi C++\STL2\2\main.cpp(28) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std: :char_traits<char>,std::allocator<char> > *,std::basic_string<char,std::char_traits<char>,st d::allocat
or<char> >,std::basic_string<char,std::char_traits<char>,st d::allocator<char> > &,std::basic_string<char,std::char_traits<char>,st d::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
c:\programmi\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::basic_string<char,std::char_trai ts<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_ traits<char>,std::allocator<char> > > >::
vector<std::basic_string<char,std::char_traits<cha r>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_ traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
c:\programmi\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::basic_string<char,std::char_trai ts<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_ traits<char>,std::allocator<char> > > >::
~vector<std::basic_string<char,std::char_traits<ch ar>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_ traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
Linking...
2.exe - 0 error(s), 4 warning(s)
Strano.. hai guardato se utilizzando invece che un iterator usi un indice int da sempre problemi?
con un int non ho problemi...
Codice PHP:
#include <vector>
#include <iostream>
#include <string> // <<<
using namespace std;
int main()
{
vector<string> a;
a.push_back("Prova");
a.push_back("vettore");
vector<string>::iterator i;
for(i=a.begin(); i != a.end(); ++i) // <<<
{
cout << *i << endl;
}
return 0;
}
Allora il vector probabilmente ha pure un reverse iterator che invece che andare avanti va in dietro (che genio)
Quindi il problema è del ++i o del cout<<*i (più probabile visti gli errori)
se infatti provi a stampare a[1] o a[2] funziona..
Soluzione? Sinceramente non ho idea del perchè *i (palesamente di tipo string) non venga stampato.. Proporrei una prova con i++ al posto di ++i e se il problema persiste di riguardarti la classe iterator..
La soluzione è BANALE, basta guardare il codice postato poco fa.Allora il vector probabilmente ha pure un reverse iterator che invece che andare avanti va in dietro (che genio) Quindi il problema è del ++i o del cout<<*i (più probabile visti gli errori) se infatti provi a stampare a[1] o a[2] funziona.. Soluzione? Sinceramente non ho idea del perchè *i (palesamente di tipo string) non venga stampato.. Proporrei una prova con i++ al posto di ++i e se il problema persiste di riguardarti la classe iterator..
Ha ha ha giusto.. l' end() ritorna l'iteratore nullo.. non esiste il "<end()".. quindi lui andava avanti e indietro per nulla..
No, quello è solo un dettaglio trascurabile. Il vero problema è la mancata inclusione di <string>!!!Ha ha ha giusto.. l' end() ritorna l'iteratore nullo.. non esiste il "<end()".. quindi lui andava avanti e indietro per nulla..