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)