2021-03-13

ACM第一周学习总结

如今我大一下学期,现在是我正式开始学习ACM的第一周,这一周我学到了很多东西,对ACM有了初步的认识。
大一上学期,课程相对较少,空余时间较多,而完成基本的课程预习、复习和作业后,我便将空余时间用于玩游戏等意义不大的活动中,我有很多次想在空闲时间自学一些计算机的知识,提高自己的能力,但实践一次又一次的证明,我的自制力没有那么强。我学习ACM,是为了将自己的空余充分利用起来,不在像上一学期一样在空余时间无所事事、游手好闲,是为了使自己的大学生活充实而充满意义,而最重要的是,提高自己的能力。
不像学习ACM的其他一些同学,寒假我没有利用起来,我与那些刷了很多题的同学相比有一定差距。“悟已往之不谏,知来者之可追”。我一定尽全力学习ACM,就算比不上那些基础较好的同学,我也要超越那个游手好闲的自己。
学习收获
这一周我学了stl,stl是标准模板库,它是一些“容器”的集合,也是算法和其他一些组件的集合。
我了解了一个万能头文件#include<bits/stdc++.h>和能增强cin和cout效率的sync_with_stdio(false);
我初步学习了栈(stack)、队列(queue)、动态数组(vector)、优先队列(priority—queue)、set和mulitset、map和multimap的知识。栈和队列都是数据结构,两者的区别在于栈是先进后出,而队列是先进先出,而优先队列是一个拥有权值观念的队列,全职最高排在前面。 set和multiset分别是集合和多重集合,它们会根据特定的排序准则自动将元素排序,两者的不同在于set不允许元素重复而multiset可以允许元素重复,它们的默认排序是从小到大。map和multimap分别是映射和多重映射,map的所有元素都是pair,pair的第一个元素被视为键值,第二个元素被视为实值,两个值可以分别用pair的两个公有函数first和second访问,所有元素都会根据元素的键值自动排序,map不允许相同元素存在而multimap允许。
我学会了用sort排序,默认排序为从小到大,可以用cmp函数来自定义排序。
例:int num[]={1,3,2,6,4};
sort(num,mum+5)//两个参数分别为起始地址和结束地址,区间为左闭右开,结束地址不排序;
unique为去重函数,该函数的作用为将容器或数组中相邻元素的重复出现的元素放到容器的末尾。
upper_bound(begin, end, value);
返回>value的元素的第一个位置。
lower_bound(begin, end, value);
返回>=value的元素的第一个位置。
例:num[] = {1,2,2,3,4,5};
lower_bound(num, num + 6, 2)为num + 1
upper_bound(num, num + 6, 2)为num + 3
这周还学习了些贪心算法的问题,学习了背包问题。

具体操作


empty() – 返回bool型,表示栈内是否为空 (s.empty() )
size() – 返回栈内元素个数 (s.size() )
top() – 返回栈顶元素值 (s.top() )
pop() – 移除栈顶元素(s.pop(); )
push(data_type a) – 向栈压入一个元素 a(s.push(a); )
队列
empty() – 返回bool型,表示queue是否为空 (q.empty() )
size() – 返回queue内元素个数 (q.size() )
front() – 返回queue内的下一个元素 (q.front() )
back() – 返回queue内的最后一个元素(q.back() )
pop() – 移除queue中的一个元素(q.pop(); )
push(data_type a) – 将一个元素a置入queue中(q.push(a); )
vector
empty() – 返回bool型,表示vector是否为空 (v.empty() )
size() – 返回vector内元素个数 (v.size() )
push_back(data_type a) 将元素a插入最尾端
pop_back() 将最尾端元素删除
v[i] 类似数组取第i个位置的元素(v[0] )

感悟

通过一周学习,了解了c++STL的一些基本知识,但对某些知识还不大熟练,未曾实践。对于学习的知识,目前我还没有深入的理解和感悟,只是会拿过来用。我会在以后刷题中不断实践与应用,从而不断加深对这些知识的理解与应用。老师布置了作业,作业上的第一个问题就是题意的理解,因为都是英文题目,所以理解题意有一定困难,刚开始我只能用翻译软件翻译。做作业时有些题目在编程软件上做出答案后,提交时总会遇到种种问题,显示错误答案,我相信在以后几周的学习中不断解决以上问题。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值