1、c++中有可以直接用的排序算法:sort函数,具体用法为sort(iterator start, iterator end );放入数组的起始位置和终止位置即可,比如sort(nums.begin,nums.end);
sort()函数是标准模板库的的函数,已经进行了优化,根据情况的不同可以采用不同的算法,所以较快。另外,sort()是类属函数,可以用于比较任何容器,任何元素,任何条件。
2、c++中获取二维数组行列数的方法:行:sizeof(a)/sizeof(a[0]),列:sizeof(a)/sizeof(a[0][0])
或者行:a.size()列:a[0].size();
3、c++反转数组:这个是使用C++STL库里的reverse函数,需要包含头文件
• vector reverseArray(vector a)
{
reverse(a.begin(),a.end());
return a;
}
4、在c++中,vector是一个十分有用的容器。
作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据;
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库;
实例:vectortest; //建立一个vector,int为数组元素的数据类型,test为动态数组名;
尾部插入数字:test.push_back(a);
两个数组连接 test.insert(test.end(),test2.begin(),test2.end());
5、队列(queue)的基本操作:先进先出
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
6、广度优先搜索(BFS)与深度优先搜索(DNS)
BFS基本思想
基本步骤:
1.从图中某个顶点v0出发,首先访问v0;
2.依次访问v0的各个未被访问的邻接点;
3.依次从上述邻接点出发,访问它们的各个未被访问的邻接点。
4.若此时图中仍有未被访问的结点,则另选图中的一个未被访问的顶点作为起始点。重复广度优先搜索过程,直到图中的所有节点均被访问过。
DFS基本思想
基本步骤:
1.从图中某个顶点v0出发,首先访问v0;
2.访问结点v0的第一个邻接点,以这个邻接点vt作为一个新节点,访问vt所有邻接点。直到以vt出发的所有节点都被访问到,回溯到v0的下一个未被访问过的邻接点,以这个邻结点为新节点,重复上述步骤。直到图中所有与v0相通的所有节点都被访问到。
3.若此时图中仍有未被访问的结点,则另选图中的一个未被访问的顶点作为起始点。重复深度优先搜索过程,直到图中的所有节点均被访问过。
7、pair是C++中一种模板类型。每个pair对象可以存储两个值,这两个值可以是不同的数据类型。存储的值可以是基本数据类型也可以是自定义数据类型。
声明命名空间:
using namespace std;
或
using std::pair;
pair
或使用全名
std::pair
一、定义和初始化
pair p1(1, 2);
pair p2(p1); //用已有的对象初始化
pair p3(1, 1.2);
pair p4; //没有显示初始化,自动执行默认初始化操作。p4为(0,0)
二、赋值操作
1、使用强制类型转换
pair p1(1, 2);
pair p2;
p2 = pair (1, 4);//赋值操作,需要用强制转换
p2 = p1; //赋值操作
2、使用make_pair()函数
pair p3;
p3 = make_pair(1, 4); //无需指明类型,可自动生成pair对象
三、访问和修改操作
pair有两个属性:first和second。
pair p1(1, 2);
p1.first = 11; //修改第一个数值
p1.second = 22; //修改第二个数值
cout << p1.first << "," << p1.second << endl;
8、数学运算
9、1< 例如1<<2 则0001->0100
n&(1< 如果n第i位为0,则n&(1< 否则不为0
常用if(n&(1<
10、对于二进制位的运算符