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++)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ STL(标准模板库)是一个非常强大和灵活的库,提供了许多基本数据结构和算法的实现。STL包括以下几个组件: 1. 容器(Containers) STL 容器提供了许多基本数据结构,如向量、链表、双向链表、队列、堆栈、集合、映射等。这些容器可以存储各种类型的数据,并提供了许多有用的操作,如插入、删除、查找、排序等。 2. 迭代器(Iterators) STL 迭代器是一种用于遍历容器中元素的工具。迭代器提供了一组统一的接口,使得算法可以直接使用不同类型的容器,而不需要了解具体容器的实现细节。 3. 算法(Algorithms) STL 算法提供了许多常用的算法,如排序、查找、计数、替换等。这些算法可以直接应用于容器上,并且具有良好的效率和可移植性。 使用 STL 可以大大简化编程过程,并提高程序的可读性和可维护性。下面是一个简单STL 示例: ```c++ #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v{5, 3, 1, 4, 2}; // 创建一个整数向量 sort(v.begin(), v.end()); // 对向量进行排序 for (int i : v) { cout << i << " "; // 输出排序后的结果 } return 0; } ``` 在这个示例中,我们使用 STL 的向量容器存储整数,并使用 sort 算法对向量进行排序,最后输出排序后的结果。这个示例只是 STL 的冰山一角,还有许多其他的用法和技巧需要学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值