ACM总结

第六次

ACM总结这是开学后的第二次总结,距离上一次写总结已经一个星期了。正式上ACM选修课也俩个星期了。

在这俩个星期里我主要就是看算法笔记,以及老师给我们发的资料。还有就是上课的时候学习的STL容器里面的栈和队列还有动态数组以及优先队列。

 

算法笔记的前一部分好多内容都是我们上个学期学过的内容。我现在看到的新的内容,就是指针和引用了。

指针:

1、指针的定义方式是int* p;可以直接后面加一个变量的地址来初始化。

2、还可以以后赋值,但接下来赋值的时候就是p=&a;因为p才是变量名,*是类型中的一部分。

3、如果前面加上*那就是在给这个地址赋值,改变这个地址里的内容。

4、如果想要拿出这个地址里面的内容,则需要在*p,用*来解开拿值。

5、指针也可以进行增减,也就是可以指向上一个或下一个指针。

6、当指针指向数组的时候,因为数组的名称就是数组的首地址。可以直接int *p=a;同时在数组中,&a[i]和a+i是等价的。

7、当然指针也可以作为函数的参数来传入函数。但在函数里面改变这个值的话,主函数里面的值也会随着改变。

 

引用:引用就是给一个变量另外取一个名字。引用需要在变量前面加上&;但引用不是取地址的意思。

对于结构体中的指针变量,可以用(*p).id或者用p->id来表示。

还有对于浮点数的比较,不能直接用==,而是需要看俩个浮点数的差值是否在一个很小的范围之内。对于与浮点数有关的大于小于之类的和等于的比较方法类似。

还有关于复杂度的一些内容,有时间复杂度还有空间复杂度以及编码复杂度。计算机一秒的运行次数大概是10^7~10^8,所以有时候我们需要选择合适的算法来编写,防止超时或超出空间。

 

算法笔记上接下来就是模拟了。

模拟:简单的模拟,按我的理解就是有一个实际情况,我们根据这个实际情况选择合适的方法模拟出这个过程。

查找元素,可以遍历一遍数据,也可以使用简便的二分查找。

图形输出,我感觉这个是最像模拟这个说法的,就是按照要求输出一个图形。

日期的处理,通过这一部分的学习,我了解到可以想建一个数组,来分别存储闰年和不是闰年的俩种情况下的十二个月的天数,以便接下来用到某月的日期时可以直接使用。

进制转换,其他进制转换为十进制这是,每个位数上的数字乘以相应的次方。8进制乘以8的各种次方。。十进制转换为其他进制就是换成多少机制就除以多少进制,然后取模。(注意是倒着读写)。

字符串的处理。对于char类型的字符串可以用<cstring>头文件下的strlen函数来得到字符串的长度。

 

接下来的学习内容就是STL里面的内容了。

栈:stack<int>s; 只能一段进或出

s.push(a):栈顶加入a。s.empty():返回的是布尔类型。

s.size():返回栈中元素的个数。

s.pop():删除栈顶

s.top():返回栈顶的值

 

队列:queue<int>p; 一端进,另一端出

p.front():返回队首。

P.back():返回队尾。

优先队列(priority_queue)和普通队列之间的区别就是优先队列可以自己安排最优级,可以不按顺序出列。

 

动态数组:vector<int>v;

和普通数组的区别就是可以变换长度。

push_back(a):尾部加上a。

pop_back():尾部删除。

 

以上就是我这个俩周的大概学习内容了,以及一些心得。加油😊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值