这个想法是迭代第一轮以打印地图的键,然后遍历每个向量并逐个打印出元素(如果有)。
void func()
{
std::map<std::string, std::vector<int> > m;
m["AA"] = {1, 2, 3, 1, 2, 1, 2, 3};
m["BB"] = {2, 3, 4, 1, 2, 3, 4, 5, 5 };
m["CC"] = {2, 3, 4, 1, 2, 3, 4, 5};
size_t size = 0;
for (auto item = m.begin(); item != m.end(); ++item)
{
std::cout << item->first << '\t';
if (size < item->second.size())
{
size = item->second.size();
}
}
std::cout << std::endl;
for (size_t i = 0; i< size; i++)
{
for (auto item = m.begin(); item != m.end(); ++item)
{
if (i < item->second.size())
{
std::cout << item->second.at(i) << '\t';
}
}
std::cout << std::endl;
}
}
如果所有向量的大小相同,您可以忽略大小检查并使用 [] 运算符来获得更好的速度。
for (size_t i = 0; i< size; i++)
{
for (auto item = m.begin(); item != m.end(); ++item)
{
std::cout << item->second[i] << '\t';
}
std::cout << std::endl;
}
查看示例代码链接,享受