[英]Iterate throught std::vector inside std::map
感谢您对我的麻烦的帮助。 我很绝望,觉得自己很白痴,但显然我不能凭自己解决这个问题。
我在地图内有一个向量
map<string, vector<string>>SubjectsAndTeachers
我充满了诸如以下数据:
[0] = {
first = "OSY"
second = size=1 {
[0] = "lada"
}
}
[1] = {
first = "PA1"
second = size=4 {
[0] = " honza"
[1] = "lada"
[2] = "mirek "
[3] = "pepa"
}
}
[2] = {
first = "PA2"
second = size=3 {
[0] = " honza"
[1] = "lada"
[2] = "pepa"
}
.
.
.
.
所需要的只是简单地对其进行迭代,以将它们打印到控制台中。 到目前为止,我想出了:
for(map<string, vector<string> >::const_iterator it = SubjectsAndTeachers.begin(); it != SubjectsAndTeachers.end(); ++it)
{
cout << it->first << ": ";
for (vector<string>::const_iterator b = it->second.begin(); b != it->second.end() ;++it)
{
cout << *b;
}
cout << endl;
}
我正在尝试获得:
OSY : lada
PA1 : honza lada mirek pepa
.
.
.
.
但这似乎不起作用。
请有人帮忙吗?
您的第二个循环看起来可疑:
for (vector<string>::const_iterator b = it->second.begin(); b != it->second.end() ;++it)
^^^^
您当然是++b
...
为了简化任务,您可以使用基于范围的状态表示。 例如
for ( const auto &p : SubjectsAndTeachers )
{
cout << p.first << " :";
for ( const auto &s : p.second )
{
cout << ' ' << s;
}
cout << endl;
}
对于您的代码,您可以在内部循环中而不是迭代器b中增加迭代器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.