操作 | 说明 |
---|---|
c.begin() | 返回一个随机存取迭代器,指向第一个元素 |
c.end() | 返回一个随机存取迭代器,指向最后一个元素的下一个位置 |
c.rbegin() | 返回一个逆向迭代器,指向逆向迭代的第一个元素 |
c.rend() | 返回一个逆向迭代器,指向逆向迭代的最后一个元素的下一个位置 |
c.insert(elem) | 插入一个elem副本, 返回新元素位置, 无论插入成功与否 |
c.insert(pos, elem) | 安插一个elem元素副本, 返回新元素位置, pos为收索起点, 提升插入速度 |
c.insert(beg,end) | 将区间[beg, end)所有的元素安插到c, 无返回值 |
c.erase(elem) | 删除与elem相等的所有元素, 返回被移除的元素个数 |
c.erase(pos) | 移除迭代器pos所指位置元素, 无返回值 |
c.erase(beg,end) | 移除区间[beg, end)所有元素, 无返回值 |
c.clear() | 移除所有元素, 将容器清空 |
c.size() | 返回当前的元素数量 |
c.empty () | 判断大小是否为零,等同于0 == size(),效率更高 |
count (elem) | 返回元素值为elem的个数 |
find(elem) | 返回元素值为elem的第一个元素,如果没有返回end() |
lower _bound(elem) | 返回 元素值 >= elem 的第一个元素位置 |
upper _bound (elem) | 返回 元素值 > elem 的第一个元素位置 |
equal_range (elem) | 返回elem可安插的第一个位置和最后一个位置,也就是 元素值 == elem 的区间 |
#include <iostream>
#include <set>
using namespace std;
int main()
{
multiset<int> grades;
grades.insert(90);
grades.insert(80);
grades.insert(85);
grades.insert(95);
grades.insert(90);
cout << "学生个数 " << grades.size() << endl;
cout << "成绩增序排序: ";
for (auto i : grades)
cout << i << " ";
cout << endl;
cout << "成绩降序排序 ";
for (auto it = grades.rbegin(); it != grades.rend(); it++)
cout << *it << " ";
cout << endl;
return 0;
}
运行结果
学生个数 5
成绩增序排序: 80 85 90 90 95
成绩降序排序 95 90 90 85 80
自定义排序顺序
struct cmp
{
bool operator()(const rec&a, const rec&b)
{
return a.x < b.x || a.x == b.x && a.y < b.y;
}
};
自定义类型并排序
struct rec
{
int x, y;
};
struct cmp
{
bool operator()(const rec&a, const rec&b)
{
return a.x < b.x || a.x == b.x && a.y < b.y;
}
};
multiset<rec, cmp>h;