C++好用的特性以及STL

C++中基于范围的for循环

程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构、选择结 重复结构)。循环结构的实现方法比较多,除了使用 while()、 do while()和for()循环之外,C++11还提供了一种称为基于范围(Rane- based)的for循环。其基本格式如下:

 for(变量声明:表达式) {
   语句序列;
 }

一些例子:

int a[]={1, 2, 3, 4, 5};
for (int x : a)
  cout << x << " "; //输出1 2 3 4 5
string s="xueruhao";
for (char &x: s) {
  x -= 32;
}
cout << s << endl;//输出XUERUHAO

STL map

map是STL的一个关联容器,以键值对存储的数据,其类型可以自己定义,每个关键字在map中只能出现一次,关键字不能修改,值可以修改。map内部有序(自动排序,单词时按照字母序排序),查找时间复杂度为O(logn)。
定义:

map<数据类型,数据类型> mp;
函数名 功能
map.insert()或按照数组直接赋值 插入
map.find() 查找一个元素
map.clear() 清空
map.erase() 删除一个元素
map.size() map的长度大小
map.begin() 返回指向map头部的迭代器
map.end() 返回指向map末尾的迭代器
map.rbegin() 返回一个指向map尾部的逆向迭代器
map.rend() 返回一个指向map头部的逆向迭代器
map.empty() map为空时返回true
swap() 交换两个map,两个map中所有元素都交换

STL set

set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作。
定义:

set<数据类型> s;

用法和map类似,多的竞赛也用不到

STL优先队列

priority_queue<int>Q;//默认最大堆
Q.top();//返回最大堆的堆顶元素(不删除)。
Q.pop();//删除堆顶元素
Q.size();//返回队列中的元素的个数。
Q.empty();//队列为空时 返回 true

STL二分

//对非递减 A 序列 输出元素数组下标
cout<<upper_bound(A,A+n,3)-A<<endl;
//查找>x 的最小数组下标
cout<<lower_bound(A,A+n,3)-A<<endl;
//查找>=x 的最小数组下标
//upper_bound-lower_bound 就是 x 元素的个数
cout<<find(A,A+n,3)-A<<endl;
//查找=x 的元素的数组下标
cout<<upper_bound(B, B+n,7,greater<int>())-B<<endl;
//查找<x 的最小数组下标
cout<<lower_bound(B, B+n,7,greater<int>())-B<<endl;
//查找<=x 的最小数组下标
cout<<find(B,B+n,7)-B<<endl;
//查找=x 的元素的数组下标
posted @ 2024-08-22 19:48  薛儒浩  阅读(57)  评论(0)    收藏  举报