学习STL的困惑
各位前辈,我学习stl有个困惑,比如我要求一个数组的累加,那我要把数组先转化为容器,然后调类属算法去累加,那我直接写个循环求累加不是更快,学到这里一直搞不明白其中的道理,忘各位前辈指点迷津,在一个小程序里面,我发现不用STL甚至比用还快,因为生成容器对象都要耗费很多的计算量,是不是小程序或简单数据结构就不用STL了。
从抽象意义上看,数组和容器都是一组数据,而我们对一组的数据的操作不仅仅是在生成上,还有查找、添加、删除、排序,STL给出了一系列的模板,从代码重用角度,它把我们从这些操作中解脱出来,更加关注逻辑上的考虑,不然,就需要对每个数组做以上操作的函数代码。这是代码重用角度的好处。
从效率上说,STL的整体效率并不会比自己写的数组操作函数低,虽然有可能在某些数据数组的操作上,效率不高,但现在的编程中,数据大多是复杂的结构或是类对象,对复杂的结构的数据,STL体现出它的强大。
前面你说到“要把数组先转化为容器”,是不是应该把数据一开始就放到容器里,这样不用在使用的时候还要先转化一次了。