数组
#include <vector>
push_back:向量尾部增加一个元素
pop_back:删除向量中最后一个元素
empty:判断向量是否为空,若为空,则向量中无元素
size : 输出队列中数据元素的个数
vector初始化相关:
vector<int> test(n, 0)
vector<int> test(5, 2);
vector二维数组的初始化方式:
vector<vector<bool>> test(m, vector<bool>(n, false))
vector<vector<int>> test(m, vector<int>(n, 0))
vector迭代器for遍历:
nums.begin()
nums.end()
nums.rbegin()
for (vector<int>::iterator iter = test.begin(); iter != test.end(); iter++) { cout << *iter << endl; }
队列
#include <queue>
push :在队列尾部插入元素
pop : 移除最顶端的数据
size : 输出队列中数据元素的个数
empty : 判断队列是否为空
front :返回队列中第一个元素,但是并不删除
back :返回队列中最后一个元素,并且不删除
双端队列
#include <deque>
pop_back():删除队列尾部的元素,无返回值;
pop_front():删除队列头部的元素,无返回值;
emplace_back():在队列尾部添加一个元素;
emplace_front():在队列头部添加一个元素;
front :返回队列中第一个元素,但是并不删除;
back :返回队列中最后一个元素,并且不删除;
size():获得队列大小;
empty() :判断队列是否为空。
栈
#include <stack>
s.push(); //入栈
s.pop(); //出栈,只是删除栈顶元素,并不返回该元素
s.top(); //访问栈顶元素
s.empty(); //判断栈空,当栈空时,返回true
s.size(); //访问栈中元素个数
哈希表
有两种不同类型的哈希表:哈希集合和哈希映射。
哈希集合是集合数据结构的实现之一,用于存储非重复值。
哈希映射是映射数据结构的实现之一,用于存储(key, value)键值对。
哈希映射:#include <unordered_map>
unordered_map是存储<key, value>键值对的关联式容器,其元素的排列顺序是无序的。
find(key):查找以值为 key 的元素,如果找到,则返回一个指向该元素的正向迭代器;反之,则返回一个指向容器中最后一个元素之后位置的迭代器;
count(key):在容器中查找值为 key 的元素的个数;
erase():删除指定元素;
哈希集合:#include <unordered_set>
find(key):查找以值为 key 的元素,如果找到,则返回一个指向该元素的正向迭代器;反之,则返回一个指向容器中最后一个元素之后位置的迭代器;
count(key):在容器中查找值为 key 的元素的个数,0或1;
insert():向容器中添加新元素;
erase():删除指定元素;
empty():若容器为空,则返回 true;否则 false。
最值函数
#include <algorithm>
max:比较得到最大元素。
min:比较得到最小元素。
min_stack.push( ::min(x, min_stack.top()) ); // ::min表示全局的min函数,将要压栈值和最小栈栈顶元素比较得到最小元素。
#include <cmath>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long int x = -101;
double result;
result = abs(x);
cout << "abs(" << x << ") = |" << x << "| = " << result << endl;
return 0;
}
二分查找
#include<algorithm>
lower_ bound(first,last,val)用来寻找在数组或容器的[first,last)范围内第一个值大于等于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的迭代器。
upper_bound(first,last,val)用来寻找在数组或容器的[first,last)范围内第一个值大于val的元素的位置,如果是数组,则返回该位置的指针;如果是容器,则返回该位置的送代器。
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
int a[10] = {1,2,2,3,3,3,5,5,5,5};
//寻找-1
int* lowerPos = lower_bound(a,a+10,-1);
int* upperPos = upper_bound(a,a+10,-1);
printf("%d,%d\n",lowerPos-a,upperPos-a);
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 3, 5, 7, 9};
int val = 6; // 要查找的值
std::vector<int>::iterator it = std::lower_bound(v.begin(), v.end(), val);
if (it != v.end()) {
std::cout << "第一个大于等于 " << val << " 的元素位置为:" << std::distance(v.begin(), it) << '\n';
}
else {
std::cout << "在容器中未找到大于等于 " << val << " 的元素\n";
}
return 0;
}
字符串string
#include <string>
string的多种构造方式:
string str1; //生成空字符串
string str2("123456789"); //生成"1234456789"的复制品
string str3("12345", 0, 3); //结果为"123"
string str4("012345", 5); //结果为"01234"
string str5(5, '1'); //结果为"11111"
string str6(str2, 2); //结果为"3456789"
int length(); int size(); //求长度
to_string():将括号内的数字转化为字符串;
push_back():添加字符,而不是emplace_back!emplace_back()只适用于容器中存储的类型是对象,而不是基本类型;
substr():返回子字符串;
resize():改变字符数量。
#include <algorithm>
reverse:反转在[first,last)范围内的顺序;
sort():实现对数据的排序,第三个参数comp是排序的方法,默认的排序方法是从小到大排序。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b);
main(){
//sort函数第三个参数自己定义,实现从大到小
int a[]={45,12,34,77,90,11,2,4,5,55};
sort(a,a+10,cmp);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
}
//自定义函数
bool cmp(int a,int b){
return a>b;
}
数学相关
等差、等比数列通项和公式
等差通项:
等差求和公式:
等比通项公式:
等比求和公式: