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
>0map[id]。推回(赢家)代码>就足够了。无需检查计数是否为0