The first declares an array and the second declares a vector. That is why the first cannot be used with push_back.

Remember array declarations?
type arr[size] , where size is optional

The square brackets (known as subscript operators) determine the variable is an array. And type determines what type of array your variable is. So,

int arr[3] is an array of 3 integers

and

vector<int> arr[3], is an array of 3 vectors (vectors of integers)