编程中的一些注意点汇总

目录


因为时间问题,暂时只做简单记录,有时间的话部分内容将写具体的博文详细分析。


while控制数据的接收

while(scanf(%d, &a)!=EOF)

不断输入测试数据,直到遇见结束符(ctrl + z),类似的还有while(gets(str))等

scanf的妙用

scanf("%4d%2d%2d", &y, &m, &d);

输入年月日 自动复制 如19970103

全局变量

如果需要开辟大量的内存空间,必须定义为全局变量,或者使用malloc动态申请变量空间/

比如说需要定义一个大数组,如果直接在main中定义,那么函数所使用的栈空间将不足以提供如此庞大的内存,会出现栈溢出,导致程序异常终止。

哈希表

当键都是普通的正整数时,可以使用数组来构建哈希表;

也可以使用map/unordered_map来构建。

优先队列实现大顶堆和小顶堆

优先队列实现大顶堆:

priority_queue<int> Q;

实现小顶堆

priority_queue<int, vector<int>, greater<int>> Q;

对堆的有关操作:

Q.push(x);// 将元素x放入堆Q中
int a = Q.top();// 将堆顶元素的值赋值给a,但是不弹出堆顶元素
Q.pop();// 弹出堆顶元素,取出后会自动调整为一个新的小顶堆or大顶堆

vector容器中没有find函数

vector<int> v;
v.find();//注意!!!!不能这样用find!!
find(v.begin(), v.end(), 2);// 这样才是正确的

猜你喜欢

转载自www.cnblogs.com/Elaine-DWL/p/9782114.html
今日推荐