1. ## vector<vector<T> > ?

vector<vector<T> > is kinda like 2D, right? How would I insert something to it? I know how to do it with vector<T> but my brains seem to sprain when figuring this one out (perhaps 'cause this was the very first day when I did something with STL).

2. You could do something like -

Code:
```#include <iostream>
#include <vector>

using namespace std;

int main ( void )
{
vector<vector<int> > i;

vector <int> temp1;
temp1.push_back(1);
temp1.push_back(2);
vector <int> temp2;
temp2.push_back(3);
temp2.push_back(4);

i.push_back(temp1);
i.push_back(temp2);

cout << i[0][0] << i[0][1] << i[1][0] << i[1][1];

return 0;

}```

3. This is probably clearer, as long as you note that the inner vectors are limited to a size of 20 -

Code:
```#include <iostream>
#include <vector>

using namespace std;

int main ( void )
{
vector<vector<int> > i;

vector <int> temp1(20);
i.push_back(temp1);
i.push_back(temp1);
i[0][0] = 1;
i[0][1] = 2;
i[1][0] = 3;
i[1][1] = 4;

cout << i[0][0] << i[0][1] << i[1][0] << i[1][1];

return 0;

}```
Although you could resize the inner vectors doing -

i[0].resize(30);

or dynamically push elements on the back using

i[0].push_back(21);

which would then be accessed like -

cout << i[0][20];

4. Just what I figured out an hour later after posting... :-) But, what I was after was how to do it without that temp variable; is it possible to hardcode that temp1 in?

5. Code:
```#include <vector>

using std::vector;

int main() {
int width = 10;
int height = 10;

// Create a vector of width vectors of height ints
vector<vector<int> > vecvec(width, vector<int>(height));
}```
Note that moving a vector is expensive so compound containers will be quite inefficent (the STL thinks of a move as a copy followed by the destruction of the source, see Typed Buffers at www.moderncppdesign.com for a workaround).

6. ## Ummmmm?

Ummm, I have never seen that syntax before: vector<vector<int>> i
What does it do? Whats the differens from int i[?][?]?