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 に答える