STL常用规则

Next_permutation(a,a+n) 字典序的下一个

1、  lower_bound:返回有序数组中第一个大于等于查找值的位置

例:int p=lower_bound(a,a+n,x)-a;(从a数组中查找第一个大于等于x的元素下标)

2、  upper_bound:返回有序数组中第一个大于查找值的位置

例:int p=upper_bound(a,a+n,x)-a;(从a数组中查找第一个大于x的元素下标)

3、  set集合

特点:每个元素最多出现一次,默认从小到大排好序。

创建:空对象:set<int>a;

带比较准则的空对象:

struct cmp

{

bool operator()(int a,int b)

{

return a>b;

}

};

set<int,cmp>a;

利用set对象s1拷贝生成s2:set<int> s2(s1);

插入:a.insert(1);

删除:a.erase(1);

清空:a.clear();

计数:a.count(1);

读取长度:a.size();

查找:a.find();

找到返回该值位置,否则返回最后一个元素后面一个位置(越界).

set<int>::iterator it;

it=s.find(5);

if(it!=s.end()) cout<<*it<<endl;

a.lower_bound(); a.upper_bound();可用

测试是否为空:a.empty();

首尾元素:a.begin(); a.end();

for(set<int>::iterator it=a.begin();it!=a.end();it++)

4、  map映射

特点:默认升序排序。

创建:map<int,string> a;

添加:a[1]=”ANSWER”;

查找:map<int,string>::iterator it

it=a.find(1);

if(it!=a.end()) 成功;

删除:查找成功后a.erase(it);

读取长度:a.size();

清空:a.clear();

测试是否为空:a.empty();

首尾元素:a.begin(); a.end();

for(set<int>::iterator it=a.begin();it!=a.end();it++)

a.lower_bound(); a.upper_bound();可用

5、priority_queue优先队列

特点:默认从大到小排序

改变优先级:priority_queue<int,vector<int>,greater<int> > q;(从小到大)

struct node

{

int a,b,c;

bool operator < (const node &a) const

{

return a>a.a||(a==a.a&&b>a.b);

}

};

时间: 2024-10-19 12:48:40

STL常用规则的相关文章

Yii rules常用规则

1 Yii rules常用规则 2 3 return [ 4 //必须填写 5 ['email, username, password,agree,verifyPassword,verifyCode', 'required'], 6 7 //检查用户名是否重复 8 ['email','unique','message'=>'用户名已占用'], 9 10 //用户输入最大的字符限制 11 ['email, username', 'length', 'max'=>64], 12 13 //限制用户

STL 常用算法

1.      STL 常用算法 l  for_each() 例1 //普通函数 voidFuncShowElemt2(int &t) { cout << t << " "; } vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); //通过回调函数  谁使用for_each 谁去填写回调函数的入口地址 for_each(v1.begin(), v1.end(),

yii rules 转自 安全者 &#187; Yii rules常用规则 ,适用Yii2

安全者 » Yii rules常用规则 ,适用Yii2 public function rules(){return array(//必须填写array('email, username, password,agree,verifyPassword,verifyCode', 'required'),//检查用户名是否重复array('email','unique','message'=>'用户名已占用'),//用户输入最大的字符限制array('email, username', 'length

C++ STL 常用遍历算法

C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性奠定了基 础 3) STL的算法,通过函数对象实现了自定义数据类型的算法运算:所以说:STL的算法也提 供了统一性.                核心思想:其实函数对象本质就是回调函数,回调函数的思想:就是任务的编写者和任务的调用者有效解耦合.函数指针做函数参数.4) 具体例子:transf

C++ STL 常用算术和生成算法

C++ STL 常用算术和生成算法 accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> vector<int> vecIntA; vecIntA.push_back(1); vecIntA.push_back(3); vecIntA.push_back(5); vecIntA.push_back(7); vecIntA.push_back(9); int iSum = accumul

基于内存查看STL常用容器内容

有时候在线上使用gdb调试程序core问题时,可能没有符号文件,拿到的仅是一个内存地址,如果这个指向的是一个STL对象,那么如何查看这个对象的内容呢? 只需要知道STL各个容器的数据结构实现,就可以查看其内容.本文描述了SGI STL实现中常用容器的数据结构,以及如何在gdb中查看其内容. string string,即basic_string bits/basic_string.h: mutable _Alloc_hider _M_dataplus; ... const _CharT* c_s

C++STL 常用 函数 用法

学完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在这些图形库之外,最常用的可能就是STL,这个东西由于当时学c++的时候迷迷糊糊,完全是一头雾水,上学期数据结构之后开始有点儿开窍了,现在把才c++STL中常用的函数,用法贴一下,也是记录一下,希望能给一样迷糊的盆友们一些帮助. 整理自<ACM程序设计> 迭代器(iterator) 个人理解就是把所

makefile的常用规则

一.前言 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 二.正文 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器.假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf("Hello Linu

C++中STL常用容器的区别(转)

我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚. verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素.此外,当被插入的内存空间不够时,需要重新申请一块足够大的