Hmm... there's another thing in your question that worried me. It is important to understand what the vector member function push_back() does.

It inserts a value into the vector. That is, it increments the size of your vector by 1 and places a new value in that new position.

Code:
vector<int> myV;
myV.push_back(12);  //myV has 1 element.
cout << myV[0];         //outputs 12
myV.push_back(7)     //myV has now 2 elements
cout << myV[1]          //outputs 7
/*... and so forth ... */
So... when you declare a vector like so,
Code:
vector<int> myV(10);
You are declaring a vector of 10 elements. If declared inside a function (and main() is also a function), these elements are uninitialized. Which means they contain whatever garbage was on that location in memory.

When you subsequentely type,
Code:
myV.push_back(3);
You will be making your vector grow to 11 elements and the value 3 will be placed on this new position. (In arrays and containers, the back of an array is the last element, the front of an array is the first element)

So... I personally prefer my vectors to be declared without any elements (and empty vector just like I did on the first piece of code up there) and then use a loop to populate them with push_back(). I also hear this is best, since populating a vector with already defined dimensions is slower.

However, there are ways to initialize vectors with defined dimensions.

Code:
vector<int> myV(10, 0) //Will create a vector of 10 elements, each initialized to 0
vector<int> myV(anotherV)  // Will create a vector that is an exact copy of the anotherV vector