我想遍历这里的map<int,map<int,set<int>>> mep;
以这种方式获取错误(“->”的基本运算符没有指针类型)
for(auto p : mep){
vector<int> temp;
auto s = p->second->second;//getting here here
for(auto it : s){
temp.push_back(it);
}
result.push_back(temp);
}
答案 0 :(得分:1)
您有三个嵌套容器。您应该期望有三个嵌套的 for循环:
std::vector<int> temp;
for (const auto& p1 : mep) {
for (const auto& p2 : p1.second) {
for (const int n : p2.second) {
temp.push_back(n);
}
}
}
注释:
const auto&
(引用)。没有参考,您将创建副本。p1
,p2
,n
);根据您的情况。using namespace std;
被认为是坏习惯。解释here进行解释。答案 1 :(得分:0)
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-fb8b8dccf-h5hhk 0/1 ContainerCreating 1 20h
kube-system coredns-fb8b8dccf-jblmv 0/1 ContainerCreating 1 20h
kube-system etcd-ubuntu6 1/1 Running 0 19h
kube-system kube-apiserver-ubuntu6 1/1 Running 0 76m
kube-system kube-controller-manager-ubuntu6 0/1 CrashLoopBackOff 7 75m
kube-system kube-flannel-ds-amd64-4pqq6 1/1 Running 0 20h
kube-system kube-flannel-ds-amd64-dvfmp 0/1 CrashLoopBackOff 7 20h
kube-system kube-flannel-ds-amd64-dz9st 1/1 Terminating 0 20h
kube-system kube-proxy-9vfjx 1/1 Running 0 20h
kube-system kube-proxy-q5c86 1/1 Running 0 20h
kube-system kube-proxy-zlw4v 1/1 Running 0 20h
kube-system kube-scheduler-ubuntu6 1/1 Running 0 76m
nginx-ingress nginx-ingress-6957586bf6-fg2tt 0/1 Terminating 22 19h
p->第二秒钟为您提供了地图对象,而不是迭代器对象,因此没有->第二,您有一个地图对象,需要在此地图对象上拥有新的迭代器
答案 2 :(得分:0)
下面是与设置和打印地图数据结构的set值相同的代码,
set<int> sv = { 1,2,3,4,5};
map<int, set<int>> ms = {{2,sv}, {1,sv}};
map<int, map<int,set<int>>> mep = {{1,ms}};
for (auto i:mep) { // Outer map iteration
for (auto j:i.second) { // Inner map iteration
for (auto s:j.second) { // Set iteration
cout<<"Set:"<< s;
}
}
}
您可以根据需要进行修改。