[英]c++ std::map<std::string, std::set<std::string>> . How to loop set values?
[英]C++ Using std::set<> in std::map<>
我想在std :: map中使用std :: set
我沒有很多std ::容器的經驗,所以我不確定我是否使用正確。 我正在嘗試處理一組值,並且每組中都是另一組值。
map<string, set<string> > data_map;
data_map["KEY1"].insert("VAL1");
data_map["KEY1"].insert("VAL2");
data_map["KEY2"].insert("VAL1");
data_map["KEY2"].insert("VAL3");
當我嘗試訪問地圖(內部周期)中的設置時,在這里出現錯誤
error: no match for call to ‘(std::set<std::basic_string<char> >) ()’|
error: no match for call to ‘(std::set<std::basic_string<char> >) ()’|
for( map<string, set<string> >::iterator mip = data_map.begin();mip != data_map.end(); ++mip) {
for ( set<string>::iterator sit = mip->second().begin(); sit != mip->second().end(); ++sit )
cout << *sit << endl;
}
您能告訴我如何迭代所有值嗎?
mip->second().begin()
應該
mip->second.begin()
您應該使用mip-> second而不是mip-> second()。 我建議您在for-each循環中使用auto。
for(auto mip : data_map)
{
//Do another loop to get the values of your set, to get the set from the map use get<1>(mip);
}
最好以這種方式閱讀,減少錯誤的空間。
不要像函數那樣調用集合。
for( map<string, set<string> >::iterator mip = lines.begin();mip != lines.end(); ++mip) {
for ( set<string>::iterator sit = mip->second.begin(); sit != mip->second.end();
++sit )
cout << *sit << endl;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.