У меня есть вопрос о объединении карт, имеющих векторы как раздел значения. например, я мог бы иметь следующее:Объединение нескольких карт с векторами в одну карту
std::map<int, std::vector<Affector*> > affectors;
Я хочу построить эту карту, объединив несколько меньших карт. Например:
for (auto ch = chList.begin(); ch != chList.end(); ++ch)
{
std::map<int, std::vector<Affector*> > tempAff = ch->getemng()->getAffectorsInOrder();
std::map<int, std::vector<Affector*> > tempAff2 = ch->getpmng()->getAffectorsInOrder()
//I want to append both of these maps to the top level affectors map
}
я могу думать очевидного решения, которое было бы
for (auto ch = chList.begin(); ch != chList.end(); ++ch)
{
std::map<int, std::vector<Affector*> > tempAff = ch->getemng()->getAffectorsInOrder();
for (auto aff = tempAff.begin(); aff != tempAff.end(); ++aff)
{
affectors[aff->first].push_back(aff->second);
}
tempAff.clear();
tempAff = ch->getpmng()->getAffectorsInOrder();
for (auto aff = tempAff.begin(); aff != tempAff.end(); ++aff)
{
affectors[aff->first].push_back(aff->second);
}
...
}
Это будет работать, но чувствует себя неэффективным. Я не могу использовать операцию вставки карты, так как мне нужно сохранить существующие значения в векторах. Есть ли лучший способ объединить карты, о которых я не думаю?
Благодаря
является Multimap вариант? –