C++ Vectors (of Vectors!) Woo hoo! 2-dimensional matrices!

Why we need them:

2-d vectors allow us to analyze data, keep track of 2-d data sets, and program basic games.

A vector is declared using the following format:

**vector<type> name; **// for size zero

**vector<type> name(size);** //for a vector of
integer 'size'

A 2-d vector is declared like this:

**vector<vector<int> > table(sizeV, sizeV);**

Other useful vector commands:

**vectorName.pop_back();** // removes the last
element of the vector

**vectorName.size();** // returns the number of
elements of the vector

**vectorName.push_back(variable);** // adds *
variable* to the end of the vector, i.e. makes the variable bigger!

**vectorname.resize( newsize);** //
changes the vector to be of size

Example program that a 2-d vector, and fills it with zeros and ones:

// example program using vectors of vectors // this program creates a vectors of vectors (a table) // and then fills the table with ones or zeros, // based on a user specified probability

#include <iostream> #include <vector>

using namespace std;

int main () { cout << endl; cout << "This program creates a vector of vectors (called a table) " << endl; cout << "and fills each element with either a zero or one, based on" << endl; cout << "a user-specified probability." << endl << endl; cout << "Please input size of list to be input: ";

int sizeV;

cin >> sizeV;

cout << endl; // now declare vector of appropriate size

vector<vector<int> > table(sizeV, sizeV); // ask for probability of having a one in each element

cout << "Please input the probability of having a one in "; cout << "each element: "; double probONE; cin >> probONE; cout << endl;

// error checking to weed out those too ignorant to know what a probability is // using a loop that will continue until the user gets it right!

while ( (probONE < 0) or (probONE > 1) ) { cout << "The probability of something must be between zero and one. Please try again."; cout << endl << endl; cout << "Please input the probability of having a one in"; cout << "each element: "; cin >> probONE; }

// now fill the table with ones and zeros // I will use nested whiles because we haven't gotten to "for" loops yet int i = 0; int j = 0; while (i < sizeV) { j = 0; while (j < sizeV) { if (probONE > static_cast<double>(rand())/RAND_MAX ) {table [i] [j] = 1;} else {table [i] [j] = 0;} j=j+1; } i=i+1; } // need to output the table to the screen i = 0; // remember not to redeclare these counters, just zero them out again j = 0; while (i < sizeV) { j = 0; while (j < sizeV) { cout << table [i] [j] << " "; j=j+1; } cout << endl; i=i+1; } cout << endl; // add one more carriage return to make the screen look pretty return 0; }