cateof cateof - 2 months ago 8
C++ Question

Extract vector from std::map<int, std::vector>

Here is my code

#include <iostream>
#include <map>
#include <string>
#include <vector>

typedef std::vector<int> VectorInt;
typedef std::map<int, VectorInt> MapVectorInt;

int main() {
MapVectorInt myMap;

VectorInt v1;
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);

VectorInt v2;
v2.push_back(2);
v2.push_back(4);
v2.push_back(6);

myMap.insert(std::make_pair(0, v1));
myMap.insert(std::make_pair(1, v2));



return 0;
}


What is the bese way to take (extract/get) the vector at position x (eg 1,2...);

M.M M.M
Answer

You can refer to the vector in the map with myMap[0] or myMap[1].

You could make an alias for either of those, e.g. auto& x = myMap[0];. Using the alias will access the vector as it is stored in the map.

To take a copy of the vector (so that you can modify the map contents without changing the copy), it is just the same as copying any other object:

auto x = myMap[0];

Note that 0 and 1 refer to the key you used in the insert call; not to the search order or the insertion order (although in your example those things all happen to be the same).