C++和python常用函数
c++常用函数
sort(v.begin(),v.end())
// 向量v
vector<int> v;
sort(v.begin(),v.end())
// 数组a
sort(a,a+n);
// 可以加参数cmp
// 比如对intervals = [[1,2],[2,3],[3,4],[1,3]] 中每个向量第一个元素按从小到大排序
sort(intervals.begin(), intervals.end(), [](const auto& u, const auto& v) {
return u[0] < v[0];
});
- 默认升序
如果要逆序就麻烦了
template <typename T>
struct cmp
{
bool operator()(const T &x, const T &y)
{
return x>y;
}
};
sort(nums.begin(),nums.end(),cmp<int>());
max_element(v.begin(),v.end())
- 返回指针,指向最大元素
pair<int,int>
pair<int, int> p1(1, 2);定义和初始化- 可以用已有对象初始化pair<int, int> p2(p1);
- 没有初始化,默认为(0,0)
赋值:p2 = pair<int, int> (1, 4); 强制类型转换
访问:p2.first,p2.second
make_pair(1,2)
queue()
queue<pair<int,int>> que 构造
que.emplace(1,2) emplace自带调用构造函数,而push需要先自己搞出对象再传入
que.front()返回队首元素的引用
que.back()返回队尾元素的引用
que.pop()删除第一个元素
queue.size()元素数量
find()
find(v.begin(), v.end(), 3) 查找v中==3的元素的位置,返回指针
priority_queue
头文件: #include<queue>
定义:priority_queue<int> p; 默认为大顶堆
或priority_queue<Type, Container, Functional> Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。
如priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(&cmp)> q(cmp);
其中比较函数为:
static bool cmp(pair<int, int>& m, pair<int, int>& n) { return m.second > n.second; }
这里定义的是一个储存pair<int,int>的小顶堆。
操作(和队列基本操作相同:
- top 访问队头元素
- empty 队列是否为空
- size 返回队列内元素个数
- push 插入元素到队尾 (并排序)
- emplace 原地构造一个元素并插入队列
- pop 弹出队头元素
- swap 交换内容
参考:https://blog.csdn.net/weixin_36888577/article/details/79937886
unordered_set()
创建:unordered_set<char> occ;
删除:occ.erase('a')
插入:occ.insert('a')
判断是否在set中:occ.count('a')
vector<>
创建一个n*n的二维数组:vector<vector<int>> dp(n, vector<int>(n));
创建变量并赋初始值:vector<int> v(10,1) 长度为10,初值1
dp.push_back(),添加一个元素
python常用函数
sorted()
sorted(iterable, key=None, reverse=False)
参数说明:
- iterable – 可迭代对象。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回重新排序的列表。
set()
创建:occ = set()
occ = set(iterable比如列表、字符串)
删除:occ.remove('a')
插入:occ.add('a')
判断是否在set中:'a' in occ



