关闭

关于STL的意义

761人阅读 评论(0) 收藏 举报
    STL封装了一堆底层的算法,但是为什么很多学C++都对STL崇拜不一,想问一下大家觉得STL最大的意义在哪里?
    C++有没有关于数据库方面的库?

       C++是一门很棒的语言,唯一的缺陷就是相关的库太少,不是因为大家不想为它写库,而是它的库很难写。而STL是C++v的标准模板库,里面封装了很多经典的算法,再加上是基于模板的,适用于多种数据类型,某种程度上说是通用算法,所以它在C++中的地位很高。
 
    STL的意义就在于它为我们提供了很多很好的“零件”,我们可以用它开发自己的“车”!
而且STL制造的“零件”是那么的优良(空间效率和时间效率都是非常不错的,要不c++又怎么会
把它纳入标准呢,呵呵),决非一些做工粗糙的国产货(呵呵,没有BS国产的意思,不过民族企
业还是需要努力!)
    学STL的意义就在于它为我们提供了很多很好的“零件”,我们可以用它开发自己的“车”!
而且STL制造的“零件”是那么的优良(空间效率和时间效率都是非常不错的,要不c++又怎么会
把它纳入标准呢,呵呵),决非一些做工粗糙的国产货(呵呵,没有BS国产的意思,不过民族企
业还是需要努力!)

    学c++不学STL(现在叫标准程序库或许好点,后者对STL有所改进,应该算是STL的超集),肯定算遗憾,可惜现在很多学校并不知道,学校教c++的时候,根本没有提到过STL
    不学STL(现在叫标准程序库或许好点,后者对STL有所改进,应该算是STL的超集),肯定算遗憾,可惜现在很多学校并不知道,学校教c++的时候,根本没有提到过STL
    还有我觉得c++的库之所以难写,与c++标准在各个编译器厂商的实现并不统一有很大关系!
比如微软为了推销自己的c++编译器,可能写了一些很多自己的库,但是出于商业的目的这些库
拿到borland的c++编译器就不一定好用!同样的事情也可以发生在borland对microsofe身上!
这样就造成了库使用的不方便~
    对比c++,java就做的不错,其实java之所以这么成功与java丰富的库是离不开的,java标准属
于sun公司(商业性很强的公司),所以的jvm都严格执行sun的java标准,所以所有为java开发
的库都可以很方便的在各种版本的jvm上执行,这样我们使用起库来就很方便了~
    C++ 除了STL 还有一些其他的开源库,这些东西为我们开发提供了极大的方便,
让程序员能把更多的经历投入到软件的实现上去,而不必在语言和算法上花太多的精力。
    STL 很大程度上= vector + basic_stream + basic_string
    由stl开始了泛型编程
    对我这样的懒人来说,没有别的,就是方便,
    比如:
#include <iostream>
#include <map>
#include <string>
int main(void)
{
    using namespace std;
    typedef map<std::string, size_t >  word_count_t;
   
    word_count_t  wc;
   
    string word;
    while(cin>>word){
        ++wc[word];
    }
   
    word_count_t::const_iterator itr;
    for(itr = wc.begin(); itr != wc.end(); ++itr){
        cout << itr->first <<" " << itr-> second <<endl;
    }
}
    这样,就可以统计一本书中各单词的出现频率,效率没得说
有时意义问得太多了,反而会迷失真正需要作的东西
    STL的伟大不仅在于它提供了大量常用的数据结构和许多经典算法,而且因为他提供迭代器:你可以利用迭代器概念,写出自己的迭代器,对一些不是用GP写的数据结构,也能很好的使用;而且,他可以让你自己去扩充库,并且与现有的库可以很好的配合使用。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:127298次
    • 积分:1712
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:54篇
    • 译文:0篇
    • 评论:16条
    最新评论