1.set
set 集合:set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset.
2.map(关联式容器)
map容器,底层使用红黑树数据结构实现,不能重复出现值,已经体现仿函数、对组的结构作用,空间而言不连续
#include <iostream>
#include <map>
using namespace std;
/*STL容器 map的相关使用*/
void use()
{
map<int, int> m;
// insert
m.insert(pair<int, int>(1, 10));
m.insert(make_pair(2, 20));
cout << "map的第一个值" << endl;
cout << m.begin()->first << endl;
}
/*仿函数制定规则*/
class Mysort
{
public:
bool operator()(int a, int b)
{
return a > b;
}
};
void mySort()
{
map<int, int, Mysort> m2;
m2.insert(pair<int, int>(1, 10));
m2.insert(pair<int, int>(3, 40));
m2.insert(pair<int, int>(5, 6));
m2.insert(pair<int, int>(2, 14));
m2.insert(pair<int, int>(4, 12));
for (map<int, int>::iterator it = m2.begin(); it != m2.end(); it++)
{
cout << "map容器的第一个值" << it->first << endl;
cout << "map容器的第二个值" << it->second << endl;
}
}
void sortMap()
{
/*map按照key进行排列,并没有按照val进行大小排序*/
map<int, int> m1;
m1.insert(pair<int, int>(1, 10));
m1.insert(pair<int, int>(3, 40));
m1.insert(pair<int, int>(5, 6));
m1.insert(pair<int, int>(2, 14));
m1.insert(pair<int, int>(4, 12));
for (map<int, int>::iterator it = m1.begin(); it != m1.end(); it++)
{
cout << "map容器的第一个值" << it->first << endl;
cout << "map容器的第二个值" << it->second << endl;
}
}
int main()
{
sortMap();
mySort();
cout << "map" << endl;
return 0;
}