ACM 书中题目专题结束了,通过这一个专题的练习,掌握了一些写程序的技巧,同时也发现了自己在写程序中出现的问题。在写程序时发现自己总是对题意理解不够深刻,要花费很长时间才能读懂一个题目,对一个题目总是感觉无从下手,知识掌握的不够多,STL应用不够熟练,对写出的程序思考不够严谨,导致总是提交失败。
第一个专题的练习使我了解了STL,以及STL的应用。STL就是标准模版库,其中非包含了一些简单函数,有向量(vector) 队列(queue) 堆栈(stack) 集合(set)等。
栈:是一种先进后出的数组结构,她有一个出口,只能操作最顶端的元素。empty() 表示栈内是否为空; size()返回栈内元素个数;top() 返回栈顶元素值; pop() 移除栈顶元素; push() 像栈压入一个元素。
队列:市一中先进先出的数据结构,从底端加入元素,从顶端取出元素。 empty() ;size(); pront() 返回队列内下一个元素; back() 返回对内最后一个元素; pop() ;push()。
动态数组:empty() ; size() ; push_back() 将元素插入最尾端; pop_back() 将最尾端元素删除; v[i] 类似数组取第i位置的元素。
sort: 排序,默认从小到大排序;sort(begin,end,cmp)。可以通过自定义,改变排列规则。
upper_bound、lower_bound:upper_bound(begin,end,value) 返回>value的元素的第一个位置;lower_bound(bagin,end,value)返回>=value的元素的第一个位置。
set和multiset:set和multiset 会根据特定的排序准则,自动将元素排序,两者的不同之处在于multise可以允许元素重复而set不允许于元素重复。
map和multimap:所有元素都会根据元素的键值自动排序,map的所有元素都是pair,pair的第一个元素都被视为键值,第二个元素为实值。map不允许两个元素有相同的键值,但multimap可以。
优先队列(priority_queue):一个拥有权值观念的queue,自动依照元素的权值排列,权值最高的排在前面。缺省情况下,函数是利用一个max_heap完成的。
通过这次训练,对编程有了大体的概念,感觉自己写代码的能力强了很多,对稍微复杂的题目有一定的分析能力,解决问题的能力也提升了许多,对提交出现的问题也有了较强的应变能力。同时学会了运用一些简单的函数来简化代码,调试的能力也提升了一个档次。通过对ACM的学习,感觉自己知识面广了很多,逻辑能力提升了很多,独立思考能力得到了强化,学会思想的灵活运用。
ACM第一个专题虽然已经结束,但这个专题尚未完成的题我会继续尝试,提升自己读题,解题的能力,强化对STL的应用。以后的训练我会投入更多的时间来练习,增强自己写代码的能力,熟练运用各种函数,