// Dynamic.cpp : 定义控制台应用程序的入口点。
//visual studio 2013
#include "stdafx.h"
#include"iostream"
#include"fstream"
#include"sstream"
#include"vector"
#include"map"
using namespace std;
typedef multimap<int, int> Mmap;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("abc.txt");
//getline先清点其单词数过滤单词数为0的段落
for (string s; getline(in, s);)
{
for (string t; sin >> t; num++);
if (num)
{
nums.insert(Mmap::value_type(num, n++));
abc.push_back(s);
}
}
for (Mmap::iterator it = nums.begin(); it != nums.end(); it++)
{
cout << abc[it->second] << endl;
}
system("pause");
return 0;
//visual studio 2013
#include "stdafx.h"
#include"iostream"
#include"fstream"
#include"sstream"
#include"vector"
#include"map"
using namespace std;
typedef multimap<int, int> Mmap;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("abc.txt");
vector<string> abc;
Mmap nums;
//n代表段落数目
int n = 0;//getline先清点其单词数过滤单词数为0的段落
for (string s; getline(in, s);)
{
istringstream sin(s);
//num代表每一段
int num = 0;for (string t; sin >> t; num++);
if (num)
{
nums.insert(Mmap::value_type(num, n++));
abc.push_back(s);
}
}
for (Mmap::iterator it = nums.begin(); it != nums.end(); it++)
{
cout << abc[it->second] << endl;
}
system("pause");
return 0;
}
multimap 与 map 一样,都是使用红黑树对记录型的元素数据,按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是 multimap 允许将具有重复键值的元素插入容器。在 multimap 容器中,元素的键值与元素的映照数据的映照关系,是多对多的,因此,multimap 称为多重映照容器。multimap 与 map 之间的多重特性差异,类似于 multiset 与 set 的多重特性差异。这一段是引用此作者的点击打开链接