STL的简单应用二

生成排序
头文件: #include
bool next_permutation(begin, end);
改变区间内元素的顺序,产生下一个排列。
bool prev_permutation(begin, end);
产生前一个排列。
注意:end为最后一个元素的下一个位置。

upper bound和lower bound
upper_bound(begin, end, value);
返回>value的元素的第一个位置。(地址)
lower_bound(begin, end, value);
返回>=value的元素的第一个位置。(地址)
num[] = {1,2,2,3,4,5};
lower_bound(num, num + 6, 2)为num + 1(num为数组首地址)
upper_bound(num, num + 6, 2)为num + 3
注意:返回的是地址值;
要输出返回元素的下标需要输出(返回值-num的首地址)
例:

int *s, *e;
    s = lower_bound(a, a + 10, 5);
    e = upper_bound(a, a + 10, 5);
    cout<<s – a<<“\t”<< e - a;

set和multiset
set 和 multiset会根据特定的排序准则,自动将元素排序,两者的不同之处在于multiset可以允许元素重复而set不允许元素重复。
关于set,必须说明的是set关联式容器。 set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。
用法
1.头文件
#include (默认从小到大排序)
2.常用操作
set s 定义一个set容器 类型为int型
s.begin() 返回指向第一个元素的迭代器
s.clear() 清除所有元素
s.count() 返回bool型,有返回1,无返回0
s.empty() 如果集合为空,返回true
s.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase() 删除集合中的元素
s.find() 返回一个指向被查找到元素的迭代器,如果没找到则返回end()
s.insert() 在集合中插入元素
s.size() 集合中元素的数目
s.swap() 交换两个集合变量

迭代器
1.是一个“可遍历STL容器内全部或部分元素”的对象。
2.指出容器中的一个特定位置。
3.如同一个指针。
4.提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范围。
针对set的个人理解:定义指向容器的指针变量
迭代器举例:
multiset :: iterator pos;
for(pos = s.begin(); pos != s.end(); pos++)

猜你喜欢

转载自blog.csdn.net/weixin_43244265/article/details/88081817