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;
}