C++ std::vector转换为std::map

C++ std::vector转换为std::map,c++,algorithm,c++11,c++14,C++,Algorithm,C++11,C++14,我有一个std::vector,我想将其转换为std::map,其中的键将是category\u id,值将是该类别所有获奖者的向量 struct C { int category_id; int winner; } 如何进行上述转换?我应该使用两个循环,一个用于键,一个用于值吗 //vector<C> C already initialised map<int, vector<int>> Map; for (auto& c:C)

我有一个
std::vector
,我想将其转换为
std::map
,其中的键将是
category\u id
,值将是该类别所有获奖者的向量

struct C {
    int category_id;
    int winner;
}
如何进行上述转换?我应该使用两个循环,一个用于键,一个用于值吗

//vector<C> C already initialised

map<int, vector<int>> Map;

for (auto& c:C)
{
    Map.insert(pair<int, vector<int>>(c.category_id, vector<int>(c.winner))); 
}
//向量C已初始化
地图;
用于(自动和控制:c)
{
图.插入(对(c.category_id,向量(c.winner));
}
这行吗

//vector<C> C already initialised

map<int, vector<int>> Map;

for (auto& c:C)
{
    Map.insert(pair<int, vector<int>>(c.category_id, vector<int>(c.winner))); 
}
//向量C已初始化
地图;
用于(自动和控制:c)
{
图.插入(对(c.category_id,向量(c.winner));
}

我会这样做

std::vector<C> c_vector;
std::map<int, std::vector<int>> map;
for (const auto& [id, winner] : c_vector) {
    map[id].push_back(winner);
}
std::vector c_vector;
地图;
对于(const auto&[id,winner]:c_向量){
地图[id]。推回(赢家);
}

我会这样做

std::vector<C> c_vector;
std::map<int, std::vector<int>> map;
for (const auto& [id, winner] : c_vector) {
    map[id].push_back(winner);
}
std::vector c_vector;
地图;
对于(const auto&[id,winner]:c_向量){
地图[id]。推回(赢家);
}

请告诉我们您尝试了什么以及为什么不起作用。另外,请只选择一个C++标准标签。我真的不知道这是怎么做的。请告诉我们你尝试了什么,为什么它不起作用。另外,请选择一个C++标准标签。我真的不知道这是什么话题。我认为OP需要一个地图,你可以在其中查找一个类别并获得每个类别中的赢家。我认为OP需要一个地图,你可以在其中查找一个类别并获得该类别中的每个赢家。<代码> MAP[ID]。代码>就足够了。无需检查是否
count
>0
map[id]。推回(赢家)就足够了。无需检查计数是否为0