c++里map<string,string>怎么遍历
我尝试了下map<int,string>是可以用iterator遍历的,但是<string,string>就不行...
我尝试了下map<int,string>是可以用iterator遍历的,但是<string,string>就不行
展开
展开全部
这个是不是map里面的string参数? 是的
it->second是map中对应于it->first的vector, 你这样的写法导致了复制,应该用引用。
tmp[i] 是node变量。
下面是一段简化的代码:
#include <map>
#include <vector>
#include <iostream>
struct Point {
int x;
int y;
};
std::ostream & operator <<(std::ostream & out, const Point & p) {
return out << '(' << p.x << ',' << p.y << ')';
}
using ConType = std::map<std::string, std::vector<Point>>;
void travel(ConType & con);
int main() {
std::map<std::string, std::vector<Point>> con;
std::vector<Point> a, b, c;
a.push_back({1, 3});
a.push_back({4, 5});
a.push_back({5, 7});
b.push_back({2, 3});
b.push_back({5, 3});
c.push_back({5, 7});
c.push_back({5, 4});
con["a"] = a;
con["b"] = b;
con["c"] = c;
travel(con);
}
void travel(ConType & con) {
for(auto & i : con) {
for(auto & j : i.second) {
std::cout << j << '\t';
}
std::cout << std::endl;
}
}
it->second是map中对应于it->first的vector, 你这样的写法导致了复制,应该用引用。
tmp[i] 是node变量。
下面是一段简化的代码:
#include <map>
#include <vector>
#include <iostream>
struct Point {
int x;
int y;
};
std::ostream & operator <<(std::ostream & out, const Point & p) {
return out << '(' << p.x << ',' << p.y << ')';
}
using ConType = std::map<std::string, std::vector<Point>>;
void travel(ConType & con);
int main() {
std::map<std::string, std::vector<Point>> con;
std::vector<Point> a, b, c;
a.push_back({1, 3});
a.push_back({4, 5});
a.push_back({5, 7});
b.push_back({2, 3});
b.push_back({5, 3});
c.push_back({5, 7});
c.push_back({5, 4});
con["a"] = a;
con["b"] = b;
con["c"] = c;
travel(con);
}
void travel(ConType & con) {
for(auto & i : con) {
for(auto & j : i.second) {
std::cout << j << '\t';
}
std::cout << std::endl;
}
}
展开全部
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
map<string,string> m;
m.insert(pair<string, string>("小红","1班"));
m.insert(pair<string, string>("小明", "2班"));
m.insert(pair<string, string>("小黄", "3班"));
for (map<string, string>::iterator it = m.begin(); it != m.end(); it++) {
cout << it->first <<"\t"<<m[it->first] << endl;
}
return 0;
}
#include <string>
#include <iostream>
using namespace std;
int main()
{
map<string,string> m;
m.insert(pair<string, string>("小红","1班"));
m.insert(pair<string, string>("小明", "2班"));
m.insert(pair<string, string>("小黄", "3班"));
for (map<string, string>::iterator it = m.begin(); it != m.end(); it++) {
cout << it->first <<"\t"<<m[it->first] << endl;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
遍历方法如下:
map<string,string> mymap;
auto it = mymap.begin();
for(;it != mymap.end();++it)
{
cout << it->first.c_str() << " " << it->second.c_str() << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询