my_array is an array of 2 integer values, 356 and 41, all good so far ;) ...
I am assuming that my_vector is declared as a std::vector<int*> ? So is a vector of pointers to integers, or in your case, I am assuming you intend it to be a vector of pointers to arrays (or rather a vector of pointers to the FIRST element of an array)?
When you call my_vector.push_back, it is all good, the pointer to the first element of the array is in there, my_vector has 1 element.
So now you want a keyed collection that can contain multiple vectors of arrays .... (ponders purpose of collections of collections of collections). the map is keyed on an integer and the value is a pointer to a vector of pointers to the first item in an array.
So you access the vector, using the integer key:
std::vector<int> *my_ptr;
my_ptr = my_map[1];
</int>
my_ptr is now a pointer to a vector of pointers to the first element of an array.
OR
my_ptr == &my_vector;
In order to access my_ptr as you would my_vector, it needs to be dereferenced:
int out = (*my_ptr)[0][1];