首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

map.h应用的一个有关问题

2012-02-14 
map.h应用的一个问题.现在要对一个文件内的记录进行排序,因为 map, 可以自动排序,省了不少事,但现在遇到

map.h应用的一个问题.
现在要对一个文件内的记录进行排序,因为 map<,> 可以自动排序,省了不少事,但现在遇到一个问题,因为排序的内容分两部分,
如:
AAA啊啊啊
AAA阿啊嗄
AAB啊啊不

这三条记录,可以把前三个字符进行分割,给map第一个参数,但问题是有重码,我进行排序后,就只有两条了.

AAA啊啊啊
AAB啊啊不

请问:在不修改任何内容的情况下,怎么实现我对有重码的也能排序,使用map.h !!!


谢谢!~```

[解决办法]
用multimap<string,string>
[解决办法]
看这个吧,就insert比较简单

// multimap::insert
#include <iostream>
#include <map>
using namespace std;

int main ()
{
multimap<char,int> mymultimap;
multimap<char,int>::iterator it;

// first insert function version (single parameter):
mymultimap.insert ( pair<char,int>('a',100) );
mymultimap.insert ( pair<char,int>('z',150) ); 
it=mymultimap.insert ( pair<char,int>('b',75) );

// second insert function version (with hint position):
mymultimap.insert (it, pair<char,int>('c',300)); // max efficiency inserting
mymultimap.insert (it, pair<char,int>('z',400)); // no max efficiency inserting

// third insert function version (range insertion):
multimap<char,int> anothermultimap;
anothermultimap.insert(mymultimap.begin(),mymultimap.find('c'));

// showing contents:
cout << "mymultimap contains:\n";
for ( it=mymultimap.begin() ; it != mymultimap.end(); it++ )
cout << (*it).first << " => " << (*it).second << endl;

cout << "anothermultimap contains:\n";
for ( it=anothermultimap.begin() ; it != anothermultimap.end(); it++ )
cout << (*it).first << " => " << (*it).second << endl;

return 0;
}

Output:

element 'z' already existed with a value of 200
mymultimap contains:
a => 100
b => 75
c => 300
z => 150
z => 400
anothermap contains:
a => 100
b => 75
[解决办法]
要是想知道这些是怎么回事

去看看STL标准库的实现代码,很多书上说的很详细的.

热点排行