unordered_map遍历

252 阅读1分钟

方式一:值传递遍历

cppCopy Code
for(pair<int,int> kv:map){
    cout<<kv.first<<kv.second<<endl;
}

方式二:引用传递遍历

cppCopy Code
// 注意:要加const
for(const pair<int,int>& kv:map){
    cout<<kv.first<<kv.second<<endl;
}

方式三:使用迭代器遍历

cppCopy Code
for(unordered_map<int,int>::iterator it=map.begin();it!=map.end();it++){
    cout<<it->first<<it->second<<endl;
}

方式四:结构化绑定(C++17特性)

cppCopy Code
// 值传递
for(auto [k,v]:map){
    cout<<k<<v<<endl;
}

// 引用传递
for(auto& [k,v]:map){
    cout<<k<<v<<endl;
}

其中,如果只想使用键,值可以用_代替

for(auto& [k,_]:map){
        cout<<k<<endl;
    }

for(auto& [_,v]:map){
        cout<<v<<endl;
    }