排序:
upper_bound() 指定范围内查找大于目标值的第一个元素。 #include <algorithm>
lower_bound() 返回值是一个迭代器,返回指向大于等于key的第一个值的位置
greater<int>() 递减, less<int>() 递增
bool mycomp(int i, int j) { return i > j; }
vector<int>::iterator iter = upper_bound(myvector.begin(), myvector.end(), 3, mycomp2());
sort函数中的greater排序(从大到小)less(从小到大)
sort(nums1.begin(), nums1.end(), greater<int>());
降续排序:
sort(arr.begin(), arr.end(), [](string a, string b) { return a > b; });
min_element 函数返回队列的最小值的迭代器
max_element 函数返回队列的最大值的迭代器
vector<int> n;
int maxPosition = max_element(n.begin(),n.end()) - n.begin(); // 最大值下标
int minPosition = min_element(n.begin(),n.end()) - n.begin(); // 最小值下标
优先队列 用一个map存放出发地与目的地,priority_queue正好保证 队头小,队尾大
unordered_map<string, priority_queue<string, vector<string>, std::greater<string>>> vec;
队头小,队尾大
priority_queue<string, vector<string>, std::greater<string>>
队头大,队尾小(默认)
priority_queue<string, vector<string>, std::less<string>>
优先队列操作
插入 push
弹出 pop
队头元素 top
是否为空 empty
map:
map在我们插入<key, value>键值对时,就会按照key的大小顺序进行存储,其中key的类型必须能够进行 < 运算,且唯一,默认排序是按照从小到大排序。
如果想由大到小排序:指定greater<string>
因此我们在定义map的时候,可以指定如下
map<string,int,greater<string> >
栈:
判断栈是否为空,empty(),栈顶元素top(),出栈pop(),入栈push()
queue队列操作: 只能在容器的末尾添加新元素,只能从头部移除元素。
访问第一个元素:front() 移除第一个元素:pop() 访问最后一个元素:back() 尾部添加元素:push()
vector:
reverse翻转vector
back(): 返回当前vector容器中末尾元素的引用。
pop_back(): 移除最后一个元素
用swap函数交换相同类型的两个变量内容位置 只用于vector
reverse函数翻转整个内容 可以用于string和vector
获取总和:
accumulate(retVec[i].begin(), retVec[i].end(), 0)
set:
set容器特点是没有重复元素,通过set和set的第二个参数greater<int>,达到的目的:1、去重 2、从大到小排列
set<int,greater<int>>
list:
实现方式为双向链表,由于链表的特点,任意地方的删除和插入效率很高,不支持随即存取。
两端添加元素
push_back() 和push_front()
访问两端元素
front()和back():
删除两端元素
pop_back和pop_front():
插入:
l1.insert(l1.begin(),100); 在l1的开始位置插入100。
l1.insert(l1.begin(),2,200); 在l1的开始位置插入2个100。
l1.insert(l1.begin(),l2.begin(),l2.end());在l1的开始位置插入l2的从开始到结束的所有位置的元素。
删除
l1.erase(l1.begin()); 将l1的第一个元素删除。
l1.erase(l1.begin(),l1.end()); 将l1的从begin()到end()之间的元素删除。
判断字母:
判断字母是否为大写:
bool IsUpperCase(char ch)
{
return ch >= 'A' && ch <= 'Z';
}
也可以直接用系统函数std::isupper
C 库函数 void isalnum(int c) 检查所传的字符是否是字母和数字
isalpha函数判断是不是字母
字符转化为整数:字符 - '0'
整数转化为字符:整数 + '0'
字符串:
(3)修改字符串:
函数assign()给string类变量赋值.
如str2.assign(str1);即用str1给str2赋值.
(4)查找,删除字符串
find函数第二个参数为从第几个字符开始寻找
find(myvector.begin(), myvector.end(), 30);
erease函数的第二个参数为删除几个字符
删除迭代器p所指向的元素 c.erase(p),
删除迭代器b,e所标记的范围内的元素 c.erase(b,e); 返回值都是一个迭代器,该迭代器指向被删除元素后面的元素
(5)字符串初始化
创建一个新的字符串,长度为length,初始化length个0 : string outputStr(length, 0);
(6)截取字符串
substr(i, 10)从位置i开始,截取长度为10的字符串
字符串整数之间转化:
(1)字符串转化为整数
stoi()函数把字符串转化成整数
(2)整数转字符串
to_string()
逆序遍历:
iter = .rbegin()
While(iter != .rend()){
}
获取最后一位数字,删除最后一位数字:
一个数取余%,获取最后一位,取整/,删掉最后一位,(被除数是进制基数)