0

multimap は意図しない出力を示しています。私の意図した出力はb、c dです

しかし、それはc、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、c、 c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c, c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c, c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c, d

    #include <iostream>
    #include <vector>
    #include <map>

    using namespace std;

    int main ()
    {
       multimap<char,vector<char> > mmap; //multimap 

       mmap.insert (pair<char,vector<char> >('a',vector<char>('b','c'))); //insert to multimap
       mmap.insert (pair<char,vector<char> >('d',vector<char>()));

       vector<char>::iterator veciter; 
       multimap<char,vector<char> >::iterator mapiter;

       for ( mapiter = mmap.begin(); mapiter != mmap.end(); ++mapiter) 
       {
          cout << mapiter->first << endl;

          for (veciter = mapiter->second.begin(); veciter != mapiter->second.end(); ++veciter)
          {
              cout << *veciter << ',';
          }
          cout<<endl;
        }

       return 0;
     }
4

2 に答える 2

0

コンストラクターvector<char>('b','c')は、「b」の整数値が 98 であるため、「a」の 98 個の値を保持するベクトルを作成し、コンストラクターを呼び出していますexplicit vector( size_t size, const _Tp& initial ) ...。C++ 標準をサポートしている場合、コードを修正するには、intializer listを使用できます。コードは次のようになります。mmap.insert (pair<char,vector<char> >('a',vector<char>{'b','c'}));

于 2012-12-08T08:02:13.363 に答える
0

ここに画像の説明を入力

mmap メモリ空間に格納されている要素を確認できます。

mmap.insert (pair >('a',vector('b','c'))) 、'a' の 98 個の値を持つベクトルを作成します

次のように使用できます。

mmap.insert (pair<char,vector<char> >('a',vector<char>())); 

mmap.insert (pair<char,vector<char> >('b',vector<char>())); 

mmap.insert (pair<char,vector<char> >('c',vector<char>())); 

mmap.insert (pair<char,vector<char> >('d',vector<char>()));

お役に立てれば幸いです。

于 2012-12-08T08:32:31.207 に答える