0

我有 unordered_map。在 std::list 中有客户端及其关联用户。我可以打印我的客户,但不知道如何打印其用户列表。

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;
4

3 回答 3

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;

当然,还有更多奇特的方法可以做到这一点......

于 2013-02-18T10:46:30.910 回答
0

由于您已经在使用 boost,您还可以使用 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;
}
于 2013-02-18T18:49:25.003 回答
0

您所要做的就是遍历列表:

std::list<string> const &users = it->second;
std::for_each(users.begin(), users.end(), [](string const& user){std::cout << user << std::endl;}
于 2013-02-18T13:31:42.473 回答