#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
class teststr
{
public:
teststr(char ch = ' ', int j = 0, int k = 0):a(ch), b(j), c(k){}
teststr(teststr & te)
{
a = te.a;
b = te.b;
c = te.c;
}
~teststr(){}
char a;
int b;
int c;
};
typedef pair<const int, teststr> Pair;
typedef multimap<int, teststr, less<int>> MultiMap;
MultiMap MapPoint;
char s[11] = "ifile.txt";
// firstly, need to give a nonempty file record some data meaningful;
// test input file;
ifstream ifil(s);
if (!ifil)
exit(1);
int i;
//teststr * te = new teststr;
teststr te;
int j = 0;
while (ifil >> i >> te.a >> te.b >> te.c)
{
Pair pair(i, te);
MapPoint.insert(pair);
}
MultiMap::iterator it1;
MultiMap::iterator it2;
for (int i = 1; i < 10; i++)
{
it1 = MapPoint.lower_bound(i);
it2 = MapPoint.upper_bound(i);
while (it1 != MapPoint.end() && it1 != it2)
{
cout << it1 -> first << setw(3) << setfill('+')
<< it1 -> second.a << setw(3) << setfill('+')
<< it1 -> second.b << setw(3) << setfill('+')
<< it1 -> second.c << endl;
it1++;
}
cout << "--------------------------" << endl;
}
return 0;
}
用upperbound(k)和lowerbound(k)输出键值k所对应的所有值。
最新推荐文章于 2022-05-29 16:18:24 发布