平时一些碎的笔记

1.【优先队列】

https://www.cnblogs.com/xzxl/p/7266404.html

第一个参数是数据类型,第二个参数是容器类型,第三个参数为比较函数;

容器类型默认vector<T>,比较函数默认为std::less()函数

priority_queue<int>pq1;//采用默认优先级构造队列(从大到小)

/*采用头文件"functional"内定义优先级:*/

priority_queue<int,vector<int>,grearer<int> >pq2;//使用递减greater<int>函数对象排序

priority_queue<int,vector<int>,less<int> >pq3;   //最大值优先,递减排序 

2.【无根树】

即无环连通无向图;

若一个图中每条边都是无方向的,则称为无向图。无根树它要求每个顶点之间都直接或间接相连,且图中无环,即只有简单路径。

由于树是图的子集,这一类图具有树的特征,但不具有树状的形式,没有特定的根节点,故称为无根树。

任意选取图中某个点为根,均可将无根树转化为有根树。

3.【邻接表】

for(int i=1;i<n;i++)
{
        int l,r,w;scanf("%d%d%d",&l,&r,&w);
        e[l].push_back(r);
        dis[l].push_back(w);
        e[r].push_back(l);
        dis[r].push_back(w);//以上4步每两步之间是同时压入的,所以,可以保证访问某个邻接点的时候对应的下标与对应的dis的下标相同
}

4.【中位数】

数轴上n个点到x点的距离的绝对值之和最小,那么这个数是这n个数的中位数。

5.【二分查找】

有序表中查找常常用二分查找;注意前提:有序!

6.【输入停止】

多组输入当a和b同时为0时结束不可以while(~scanf("%d%d",&a,&b)&&a&&b),这样的意思是a和b有一个为0就结束输入了,但是要两个同时为0才会停止。

7.【__gcd(a,b)】

直接可以调用,头文件是algorithm;;int、long long类型都可以,并且两个类型必须相同,且不能是浮点型;

8. 【vector】无find方法

9.  stray'\241'in program:一般是由于程序中有非法字符造成的。如中文空格 中文引号 中文各种标点符号中文空格导致

10. strchr函数原型:extern char *strchr(char *str,char c) 在str[]中查找字符c第一次出现的位置,返回指向该位置的指针;若未找到返回NULL

strstr函数原型:extern char *strstr(char *str1, char *str2)  找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符),返回该位置的指针,如找不到,返回空指针。

11. 二叉搜索树的中序遍历序列是一个升序序列

12. c11之后gets被fgets替代,gets是一个不安全的函数;原型:char *fgets(char *s, int size, FILE *stream);

13.向map中插入元素时,只有当关键字不存在时才插入,关联容器的insert()返回一个pair,pair的first成员是一个迭代器,指向具有给定关键字的元素;second是一个bool值,告诉我们插入是否成功(true/false)

14. map的下标操作只能用于map(有序)和unordered_map(无序);set没有下标操作,因为set只有一个键,没有值,而multimap没有是因为可能有多个值跟同一个键相关。

15. vector间的赋值:

  1. v1.assign(v2.begin(), v2.end());//将v2赋值给v1 但会清除掉v1以前的内容
  2. v1=v2;

16. 函数的形参是不能改变实参的值的,如果要改变,传引用;

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/85017467