一.前言:
本学期选修选择了ACM程序设计这门课,当初选择这门课是因为,通过上学期C语言的学习,感觉自己对这个方向比较有兴趣,但是学的内容非常基础,自己想要真正去了解这方面的内容,跟着费老师继续深入学习,提高自己的专业能力。虽然觉得自己的水平参加比赛的希望很渺茫,还是想努力提高自己的水平和能力。通过本学期的学习,我觉得这门课程对我的编程能力很有帮助,更重要的是,在ACM这门课中学到了一些基础算法,开发了自己的思想,这些是在平时的学习中学习不到的。
课程初始,感觉学习的内容比较基础,容易接受,但是到了后面的学习,难度开始增加,对我而言理解起来难度很大。课上跟着老师的思路还可以理解一些,到了课下自主完成题目时就感觉到力不从心,经常耗费几个小时一道题目都完成不了。
对于这门课,我很喜欢老师的授课方式以及课下的学习方式,理论加实验上机课,课下自主学习就是刷题,自己做,做完后及时自己总结,并且写成博客发表。在ACM 这门课上,学的最多的还是思想,我觉得在费老的课上学到了一种很开放的思想,而且在讲解的同时带入日常情境,加深理解,还有解题的思路,考虑事情的方法,这些东西不管是在学习上还是别的方面都很适用。
二.知识小结:
1.STL:
(1)STL(StandardTemplate Library),即标准模板库,是一个高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中。
(2)常用容器:
栈:stack是一种先进后出的数据结构,它只有一个出口,只能操作最顶端元素。
头文件: #include <stack>
操作:
empty()-- 返回bool型,表示栈内是否为空 (s.empty() );
size()-- 返回栈内元素个数(s.size() );
top()-- 返回栈顶元素值(s.top() );
pop()-- 移除栈顶元素(s.pop(););
push(data_typea) -- 向栈压入一个元素a(s.push(a);)
队列:queue是一种先进先出(First In First Out, FIFO)的数据结构,从底端加入元素,从顶端取出元素。
头文件: #include <queue>
操作:empty() -- 返回bool型,表示queue是否为空(q.empty() );
size()-- 返回queue内元素个数 (q.size());
front()-- 返回queue内的下一个元素 (q.front());
back()-- 返回queue内的最后一个元素(q.back());
pop()-- 移除queue中的一个元素(q.pop(););p
ush(data_typea) -- 将一个元素a置入queue中(q.push(a); );
动态数组:
头文件: #include <vector>
操作:empty() -- 返回bool型,表示vector是否为空 (v.empty() );
size()-- 返回vector内元素个数 (v.size() );
push_back(data_typea) 将元素a插入最尾端;
pop_back()将最尾