を作成しましたmultimap
。
multimap<int, std::vector<string> > mt;
.
また、次を使用して要素を挿入しました。
mt.insert(std::make_pair(threadid, funcname));
キーと値のペアを使用してマルチマップの要素を印刷する方法は?
を作成しましたmultimap
。
multimap<int, std::vector<string> > mt;
.
また、次を使用して要素を挿入しました。
mt.insert(std::make_pair(threadid, funcname));
キーと値のペアを使用してマルチマップの要素を印刷する方法は?
とは上書きできoperator<<
ます。コードの印刷はより簡単に見えます:vector
multimap
#include <iostream>
#include <map>
#include <vector>
#include <string>
template< class T >
std::ostream & operator << ( std::ostream & os, const std::vector< T > & v ) {
for ( const auto & i : v ) {
os << i << std::endl;
}
return os;
}
template< class K, class V >
std::ostream & operator << ( std::ostream & os, const std::multimap< K, V > & m ) {
for ( const auto & i : m ) {
os << i.first << " : " << std::endl;
os << i.second << std::endl;
}
return os;
}
int main() {
std::multimap<int, std::vector< std::string > > m;
m.insert(std::make_pair( 1, std::vector< std::string >( {"one", "two", "three" } ) ) );
m.insert(std::make_pair( 10, std::vector< std::string >( {"ten", "twenty", "thirty" } ) ) );
m.insert(std::make_pair( 42, std::vector< std::string >( {"foutry", "two" } ) ) );
std::cout << m;
}
演算子 << を上書きしたくない場合 (なぜだろう...)、その場で行うことができます:
int main() {
std::multimap<int, std::vector< std::string > > m;
m.insert(std::make_pair( 1, std::vector< std::string >( {"one", "two", "three" } ) ) );
m.insert(std::make_pair( 10, std::vector< std::string >( {"ten", "twenty", "thirty" } ) ) );
m.insert(std::make_pair( 42, std::vector< std::string >( {"foutry", "two" } ) ) );
for ( const auto & i : m ) {
std::cout << i.first << " : " << std::endl;
for ( const auto & i_v : i.second ) {
std::cout << i_v << std::endl;
}
}
}
最後に、C++11 を使用できない場合 (私も理由が気になります...)、次のようにコードを変更できます。
int main() {
typedef std::vector< std::string > strings_t;
typedef std::multimap<int, strings_t > map_t;
map_t m;
{
strings_t v;
v.push_back( "one" ); v.push_back( "two" ); v.push_back( "three" );
m.insert( std::make_pair( 1, v ) );
}
{
strings_t v;
v.push_back( "ten" ); v.push_back( "twenty" ); v.push_back( "thirty" );
m.insert( std::make_pair( 10, v ) );
}
{
strings_t v;
v.push_back( "foutry" ); v.push_back( "two" );
m.insert( std::make_pair( 42, v ) );
}
for ( map_t::const_iterator i = m.begin(), e = m.end(); i != e; ++i ) {
std::cout << i->first << " : " << std::endl;
for ( strings_t::const_iterator i_v = i->second.begin(), e_v = i->second.end(); i_v != e_v; ++i_v ) {
std::cout << (*i_v) << std::endl;
}
}
}