#include <iostream>
#include <map>
#include <vector>
int main() {
// type helpers
using MyVec = std::vector<int>;
using MyMap = std::map<unsigned int, MyVec>;
// create v1
MyVec v1 { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
// Or MyVec v1; v1.resize(10);
// create the map
MyMap x;
unsigned int key = 123;
auto it = x.find(key);
if (it == x.end())
x[key] = v1; // causes a COPY of the entire vector
for (const auto& idx: x) {
// idx.first is the key
// idx.second is the vector
std::cout << idx.first << ": ";
for (auto val: idx.second) {
// ^ no &, makes copies of values but they're ints so it's ok.
std::cout << val << " ";
}
std::cout << "\n";
}
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KCSNpbmNsdWRlIDxtYXA+CgkjaW5jbHVkZSA8dmVjdG9yPgoJCglpbnQgbWFpbigpIHsKCSAgICAvLyB0eXBlIGhlbHBlcnMKCSAgICB1c2luZyBNeVZlYyA9IHN0ZDo6dmVjdG9yPGludD47CgkgICAgdXNpbmcgTXlNYXAgPSBzdGQ6Om1hcDx1bnNpZ25lZCBpbnQsIE15VmVjPjsKCQoJICAgIC8vIGNyZWF0ZSB2MQoJICAgIE15VmVjIHYxIHsgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwIH07CiAgICAgICAgLy8gT3IgTXlWZWMgdjE7IHYxLnJlc2l6ZSgxMCk7CgkKCSAgICAvLyBjcmVhdGUgdGhlIG1hcAoJICAgIE15TWFwIHg7CgkKCSAgICB1bnNpZ25lZCBpbnQga2V5ID0gMTIzOwoJICAgIGF1dG8gaXQgPSB4LmZpbmQoa2V5KTsKCSAgICBpZiAoaXQgPT0geC5lbmQoKSkKCSAgICAgICAgeFtrZXldID0gdjE7ICAvLyBjYXVzZXMgYSBDT1BZIG9mIHRoZSBlbnRpcmUgdmVjdG9yCgoJICAgIGZvciAoY29uc3QgYXV0byYgaWR4OiB4KSB7CgkgICAgICAgIC8vIGlkeC5maXJzdCBpcyB0aGUga2V5CgkgICAgICAgIC8vIGlkeC5zZWNvbmQgaXMgdGhlIHZlY3RvcgogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgaWR4LmZpcnN0IDw8ICI6ICI7CiAgICAgICAgICAgIGZvciAoYXV0byB2YWw6IGlkeC5zZWNvbmQpIHsKICAgICAgICAgICAgICAgIC8vIF4gbm8gJiwgbWFrZXMgY29waWVzIG9mIHZhbHVlcyBidXQgdGhleSdyZSBpbnRzIHNvIGl0J3Mgb2suCiAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgdmFsIDw8ICIgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuIjsKCSAgICB9Cgl9