c/c++ 语言 map<string, vector<node> >怎样遍历vector
int x;
int y;
};
map<string, vector<node> > map1;
赋值略;
for(map<string, vector<node> > :: iterator it = map1.begin(); it!=map1.end();it++)
{
string curstr = it ->first; //这个是不是map里面的string参数?
vertor <node> tmp = it->second; //这个是不是把map里面的vector中所有的内容都放在了tmp里?
for(size_t sz = 0; sz <tmp.size(); i++)
{
//怎样遍历vertor,输出里面所有的内容??
}
} 展开
这个是不是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;
}
}
2015-12-06 · 做真实的自己 用良心做教育
Vector vec = map.get(vector名字);
方式一
for (size_t i =0; i < vec.size(); i ++) {
int d = vec[i];
}
方式二
size_t len = vec.size();
for (size_t i =0; i < len; i ++) {
int d = vec[i];
}
方式三
for (auto it = vec.begin(); it != vec.end(); it ++) {
int d = *it;
}
方式四
for (int i:vec) {
int d = i;
}
方式五
for_each(vec.begin(), vec.end(), [](int i){
int d = i;
});