1
jybox 2013-05-12 20:32:49 +08:00
vector, map, 还有些常见算法, 显然很常用, 应该算是必须掌握的.
STL因为通用性牺牲了一些性能, 应该不如你专为单一问题特别编写的算法, 但你很难写出性能更高的同样的通用算法了. |
3
bengol 2013-05-12 21:24:39 +08:00
一般大型的公司/项目都有自己的基础设施框架
|
5
middleware 2013-05-12 21:53:19 +08:00
对于通常 size 在 20 以下的小集合会用。大集合尽量少用。遇到瓶颈就毫不留情的 replace 掉。
|
6
Tinet OP @middleware 那这个对于一般数据处理(比如一般的网站的数据)是没什么用咯?
|
8
funcman 2013-05-13 00:15:07 +08:00
存指针而不是对象,性能基本上没有太大问题,也有助于减少bug。
实际项目中应用STL还是很多的,如果你是C++程序员,STL是必须学习的技术。 |
9
middleware 2013-05-13 09:11:50 +08:00
|
10
vietor 2013-05-13 09:19:18 +08:00
用STL库的时候,最重要的是:自己不要有写算法的冲动,寻找STL中已经实现的,可能会“绕一些弯”,但值得。STL的性能不用担心,因为大部分都采用inline方式实现,编译器能够优化的。最常用的就是map和list,因为接口都差不多,根绝性能要求替换实现也是很简单的,比如将list替换成vector
|
11
chchwy 2013-05-13 12:15:03 +08:00 1
我現在參與的項目是是個大約十萬行代碼的三維動畫軟件,基本方針是能用STL就盡量用STL。
相對於性能開銷,STL代碼的可靠度帶來的好處更多。而且現代compiler的優化技術非常好,下了-O2選項後,vector跟原生數組的性能差異微乎其微。 |
12
txx 2013-05-13 12:20:50 +08:00 via iPhone
必须是能用stl 绝对要用stl。就拿sort 来说。stl 会分析数据选择一个合适的算法排序 在深度什么情况下用heap 什么情况下用 qsort 什么情况下用基数 等等
人肉实现 一般情况下都不如 stl的 |
14
hooluupog 2013-05-13 12:40:43 +08:00
stl还是值得信赖的,我私底下自己实现过一些算法,用原生的数组去做发现性能不比stl高多少。另外gcc 4.8已经用c++实现,里面就使用了stl。
|
16
matthewgao 2013-05-13 12:56:34 +08:00
反正我的项目中是用的
|
17
Tinet OP @matthewgao 现在看来STL是必学的了,没白看这么久的英文原版书,我要进入石器时代咯
|
18
wenLiangcan 2013-05-13 13:18:31 +08:00 1
歪一下楼,有人写了个C的: https://code.google.com/p/libcstl/
|
20
daoluan 2013-06-04 19:56:53 +08:00
要看你是什么实际的项目,如果涉及 C++ 的地方,STL 都会有一席之地的。你学 STL 未必是为了用它,里面可以学到很多的数据结构和算法,这些对各个方向上的程序员来说都是基本素质的东西,不能不学,STL 只是更为深入。
@wenLiangcan 这个好强。 |
21
Ricepig 2013-06-04 20:28:40 +08:00 via iPhone
"有种从原始社会过度到石器时代的赶脚"
黑得漂亮! |
22
Golevka 2013-06-04 21:07:00 +08:00
其实我是冲着STL里面的一堆高阶函数去的. 我感觉STL配合lambda能秒o|o十条街
|
23
chmlai 2013-06-04 21:22:31 +08:00
如果不让用STL, 那我连C++都不用了.
|
24
cluries 2013-06-04 21:27:13 +08:00
为什么项目中不能大量使用STL呢?我们反正是大量使用的.
STL有几种实现,不同实现性能差异还是比较大的. 然后就是STL中大坑小坑都不少,建议啃一下 Effective STL |
25
BOYPT 2013-06-05 11:40:51 +08:00
STL是工程用料,工程上应该尽量使用。
这个跟在学校的“编程课”要求是不一样的,高校ACM里面经常你用STL提交的话还会因为超内存被挂。(学院派的去工程化是很多ACM大牛的代码质量那么差的原因~) |