/* multimap是C++STL容器之一,这个容器中所有元素均为pair,pair.first为键值是索引;second是实值;容器内的数据根据键值大小自动升序排序,multimap的键值允许重复。下面举一个例子说明怎样向multimap容器存入数据,然后访问这些数据并将其显示并保存到文件中。*/
//具体代码及注释如下:
#include<iostream>
#include<fstream>
using namespace std;
#include <string>
#include <map> //multimap和map#include都是map
#include<time.h> //时间头文件,随机数生成需要
int main()
{
//声明一个multimap对象mm,索引值为int型,实值为string型
multimap<int,string> mm;
string str="A";
int key=0,n=0; //key为索引值,n转化为string后与"A"组成实值
srand((int)time(0)); //随机数种子
for(int i=0;i<100;i++)
{
key = rand() % (1000); //随机产生0-1000间的随机数作为key值
//由于是multimap,故允许key可能相同
n = rand() % (100); //无实际意义,便于区分而已
str = str.append(to_string(n));
mm.insert(make_pair(key,str)); //将数据插入mm中
str = "A";
}
ofstream ofs;
int No=0; //加个序号,结果看起来更清楚
ofs.open("C:\\Users\\Administrator\\Desktop\\1111.txt",ios::out|ios::trunc);
//提示:路径要准确
for(multimap<int,string>::iterator it=mm.begin();it!=mm.end();it++)
{
ofs << No << "...." << it->first << "...." << it->second << endl;
//将序号及multimap的索引、实值存入文件
cout << "序号 " << No << " first= " << it->first << " second " << it->second << endl;
//将序号及multimap的索引、实值显示到屏幕
No++; }
ofs.close();
cout << "数据保存完毕。。。" << endl;
system("pause");
return 0;
}