Un esempio di "vettore" con righe di lunghezza diversa:
codice:#include <iostream> #include <vector> #include <limits> #include <sstream> using namespace std; template<class inType> void AcquireInput(ostream & Os, istream & Is, const string & Prompt, inType & Result) { do { Os<<Prompt.c_str(); if(Is.fail()) { Is.clear(); Is.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } Is>>Result; } while(Is.fail()); } template<class inType> inType AcquireInput(ostream & Os, istream & Is, const string & Prompt) { inType temp; AcquireInput(Os,Is,Prompt,temp); return temp; } int main() { bool endVector=false; vector< vector<int> > vect; cout<<"Inserisci 0 per terminare la riga o qualunque numero negativo per terminare il vettore"<<endl; for(int row=0;!endVector;row++) { vect.push_back(vector<int>()); cout<<endl; for(int column=0;;column++) { ostringstream os; int value; os<<'['<<row<<','<<column<<']'; value=AcquireInput<int>(cout,cin,os.str()); if(value==0) break; else if(value<0) { endVector=true; if(vect.back().size()==0) vect.pop_back(); break; } else vect.back().push_back(value); } } cout<<"Stampa contenuto vettore"<<endl; for(size_t row=0;row<vect.size();row++) { for(size_t column=0;column<vect[row].size();column++) { cout<<vect[row][column]<<' '; } cout<<endl; } return 0; }

Rispondi quotando