I have a 2D vector that I have a count on the first dimension and push_back for the second dimension. The vector i have declared like this:

std::vector<std::vector<string> > TwoD(1000, std::vector<string>());

For example say that I have counted the first dimension to 3 and push_backed the second dimension.

What I wonder how to do is how I can iterate from begin() to end() for the second dimension ? The First dimension is counted to 3.
If I only would have 1 dimension I could do like this.

for (std::vector<string>::iterator iter = TwoD.begin(); iter != TowD.end(); iter++)
    File << *iter;
8 Years
Discussion Span
Last Post by ArkM

Example for vector<int> (simple and clear initialization):

void TestVector()
    const int n2D = 4;
    typedef std::vector<std::vector<int> > V2D;
    V2D vv(1000);
    // Method #1: use reference variable for row[3]
    std::vector<int>& rv = vv[3];
    for (int j = 0; j < n2D; ++j)
    // Method #2: use vector as 2D array
    for (int j = 0; j < rv.size(); ++j)
        cout << "\t" << vv[3][j];
    cout << endl;
    // Method #3: use iterator for row[3]
    std::vector<int>::const_iterator i = vv[3].begin();
    while (i != vv[3].end())
        cout << "\t" << *i++;
    cout << endl;
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.