算法题中常用的C++函数

一、向vector容器中增添元素

1、在末尾增添一个元素  push_back()

2、在任意地方插入一个或多个元素  insert()

#include<iostream>
#include<vector>    // 注意这里不用.h

using namespace std;

int main() {
    vector<int> demo {1,2,3,4};

    // 在末尾增添一个元素
    demo.push_back(5);
    for(auto c : demo)  cout << c << " ";
    cout << endl;

    // 在下标为2的位置,插入了9
    demo.insert(demo.begin() + 2,9);
    for(auto c : demo)  cout << c << " ";
    cout << endl;

    // 在下标为2的位置,插入了3个6
    demo.insert(demo.begin() + 2,3,6);
    for(auto c : demo)  cout << c << " ";
    cout << endl;

    return 0;
}


运行结果如下:
1 2 3 4 5 
1 2 9 3 4 5 
1 2 6 6 6 9 3 4 5 
具体例子

 3、二维容器定义和初始化

vector<vector<int>> ans(size1, vector<int>(size2, 0));  // 定义size1行,size2列的容器,全部初始化为0

参考文章:https://blog.csdn.net/BShanj/article/details/113817328

 4、初始化二维vector的两种方式

一种是用push_back往二维容器中添加一维容器

一种是给 v[ ][ ] 直接赋值,具体见参考文章

参考文章:https://blog.csdn.net/a819825294/article/details/52088732

 

二、sort排序函数

1、算法题中要用到二分法,一般是需要先进行排序的,因为只有这样,才能够进行范围的缩减,如果不排序乱成一团芝麻糊,那你怎么知道left要往哪边移,right要往哪边移。

像最长上升子序列II,用了二分法,但是却不需要排序,是因为,它是从0个数开始,贪心的一点一点地把比它大的数排在后面,导致数组在要插入一个数的时候,已经就是相当于排好序的,所以就不用去排序了。

2、sort排序的时间复杂度是O(N*log2n),比冒泡排序之类的算法还要快一点。

3、sort(首地址,尾地址,比较排序的方法cmp)

首地址是闭合的,尾地址是开的,cmp是比较大小的方法,是从大到小还是从小到大,若没写则是默认从小到大。

4、sort函数包含在#include<algorithm>头文件中。

5、数组也可以用sort去排序,具体如下:

 

int a[1100];
sort(a,a+n);

 

参考文章:https://blog.csdn.net/qq_46527915/article/details/114597901

posted @ 2022-09-22 16:50  算法扫地僧  阅读(52)  评论(0编辑  收藏  举报