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 的元素的数组下标
标签:返回,map,cout,STL,元素,C++,好用
From: https://www.cnblogs.com/xueruhao/p/18373899