multimap显示非预期的输出。我的预期输出是 一个 公元前 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;
}
答案 0 :(得分:0)
构造函数vector<char>('b','c')
创建一个包含98个'a'值的向量,因为'b'的整数值是98,并且您正在调用构造函数explicit vector( size_t size, const _Tp& initial ) ...
。要更正代码,如果您支持C ++标准,则可以使用intializer list。代码如下:mmap.insert (pair<char,vector<char> >('a',vector<char>{'b','c'}));
答案 1 :(得分:0)
你可以看到mmap内存空间中的元素存储。
mmap.insert(pair&gt;('a',vector('b','c'))),创建一个具有98个'a'值的向量
你可以像这样使用:
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>()));
希望能帮到你。