2013-02-18 138 views
0

我有unordered_map。在std :: list中有客戶端及其關聯的用戶。 我可以打印我的客戶,但不知道如何打印它的用戶列表。print unordered_map <std :: string,std :: list <std::string>

mapType clientUserMap; 

clientUserMap.insert (mapType::value_type("C1", std::list<std::string> (userlist))); 

boost::unordered_map<std::string, std::list<std::string> > 
     ::const_iterator it = clientUserMap.find("C1"); 

std::cout << it->first << std::endl; 

回答

2

這是一個列表,因此遍歷列表並打印。

for(std::list<std::string>::const_iterator l_it = begin(it->second); l_it != end(it->second); ++l_it) 
    std::cout << *l_it << std::endl; 

當然也有做的許多更有趣的方式...

+0

當我想我得到了以下錯誤 警告:「自動」將改變意味着C++ 0x中;請刪除它 錯誤:ISO C++禁止「l_it」的聲明無類型 錯誤:「開始」不是在這個範圍內聲明 錯誤:「結束」在此範圍內未聲明 錯誤:的「一元無效的類型參數*' – user1841046 2013-02-18 10:48:53

+0

@ user1841046,我正在使用來自C++ 11的關鍵字,請更改它以匹配列表的迭代器類型... – Nim 2013-02-18 10:53:51

0

所有你需要做的是遍歷清單:

std::list<string> const &users = it->second; 
std::for_each(users.begin(), users.end(), [](string const& user){std::cout << user << std::endl;} 
0

因爲你已經使用升壓,你也可以使用BOOST_FOREACH遍歷用戶列表。然後 代碼應該是這樣的:

#include <boost/foreach.hpp> 
... 

boost::unordered_map<std::string, std::list<std::string> > 
    ::const_iterator it = clientUserMap.find("C1"); 

std::cout << it->first << std::endl; 

BOOST_FOREACH(std::string user, it->second) 
{ 
    std::cout << user << endl; 
} 
相關問題