2013-02-18 122 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; 
} 
相关问题