2015-12-22 118 views
-1
std::map<int, std::map<std::string, std::pair<int, std::string>>>mfvs; 

我想輸出std :: string內部映射的第一部分。問題與嵌套std :: map的輸出

for (const auto& iter :mfvs) 
{ 
std::cout << iter.second.first << "\n"; 
} 

這給了我一個錯誤

+1

你是什麼意思的第一部分?你只想要內部地圖的第一個字符串鍵? – ajshort

+0

什麼,具體來說是你得到的錯誤? – MrEricSir

回答

2

iter.secondstd::map,因此它不具有first

如果你要打印第一個(具有最低鍵)元素(並且要確保它的存在),那麼這樣做:

std::cout << iter.second.begin()->first << "\n"; 

.begin()將返回的map的第一個元素,->first將獲得它的關鍵。如果你想打印它的值,那麼沿着下面的代碼行的東西將工作

auto firstElem = iter.second.begin(); 
std::cout << firstElem->first << ": " << firstElem->second.first << ", " << firstElem->second.second << "\n";