为何某些公司不允许使用C++ STL?】的更多相关文章

说几个STL的缺点吧,虽然都是在比较极端的情况下出现,但是对于一些大项目还是会遇到的 1. 代码膨胀问题每一个实例化过的模板类,都会膨胀出一份独立的代码,比如std::vector<std::string>, std::vector<int>,编译后会产生两份代码,在VC2008下,每份代码大约是3-4kb,这是因为vector比较简单代码少,如果是map则会产生30-50kb的代码,因为map里有个复杂的红黑树.对于数据处理类的代码里一般会定义很多种不同的结构体,不同的结构体放到…
说起STL(标准模板库),相信了解C++的都不会陌生吧^_^.LZ是从大三开始学习C++(ps:不是科班出身),并慢慢接触使用STL的,在学校中使用STL比较多的情况是写数据结构代码,使用STL实现数据结构代码(我的数据结构源码),使我们专注于考虑算法思想,不拘泥于底层代码实现. 这里LZ不讲STL的具体知识,只讨论关于STL的学习和使用问题!结合LZ的学习过程,LZ觉得C++的学习(当然,这其中包括的STL)大致路线如下: 学习C++基本语法 掌握类.继承.多态等概念 理解面对对象和泛型编程思…
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上很多聪明人很多年的杰作.是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++几乎同时开始开发的:一开始STL选…
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合.这些"容器"有list, vector,set,map等.STL也是算法和其它一些组件的集合. 这里的"容器"和算法的集合指的是世界上非常多聪明人非常多年的杰作. 是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发.它是与C++差点儿同一时候開始开发的:…
一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来 的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相…
STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上很多聪明人很多年的杰作.是C++ 标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++几乎同时开始开发的:一开始STL…
面试题1:变量的声明和定义有什么区别 ? 为变量分配地址和存储空间的称为定义,不分配地址的称为声明.一个变量可以在多个地方声明,但是只在一个地方定义.加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义. 说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量. 面试题2:写出bool .int. float.指针变量与"零值"比较的if语句 bool型数据: if(flag) { A; } else { B:} ==…
前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不会告诉你距离上次使用可能已经有半年以上了. STL是什么 STL为C++的标准模版库,又称为C++泛型库,在std命名空间中定义了常用的数据结构和算法,使用起来十分方便. STL提供三种类型的组件: 容器.主要有两类:顺序容器和关联容器.前者主要包括:vector,list,deque和string…
转自:http://blog.csdn.net/hackbuteer1/article/details/7959921#t4 百度一面 1.给定一个字符串比如“abcdef”,要求写个函数编程“defabc”,位数是可变的.这个比较简单,我用的是strcpy和memcpy,然后他问有什么优化的办法,我就不知道了. 2.socket过程就是socket的server和client整个流程写下来,这个还是没啥问题的. 3.数据结构二叉树的遍历,给了个二叉树,前序.中序.后序写出来,这个没什么难度.…
本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单的理解为:使用模板的程序设计就是泛型程序设计.就像我们我们可以简单的理解面向对象程序设计就是使用虚函数的程序设计一样. STL是什么 作为一个C++程序设计者,STL是一种不可忽视的技术.Sandard Template Library (STL): 标准模板库,更准确的说是 C++ 程序设计语言标…
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情. 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL "什么是STL?",假如你对STL还知之甚少,那么我想,你一定很想知道这个问题的答案,坦率地讲,要指望用短短数言将这个问题阐述清楚,也决非易事.因此,如果你在…
转载自here 1.关于set map容器是键-值对的集合,好比以人名为键的地址和电话号码.相反地,set容器只是单纯的键的集合.例如,某公司可能定义了一个名为bad_checks的set容器,用于记录曾经给本公司发空头支票的客户.当想知道一个值是否存在时,使用set容器是最适合的.除了两种例外情况,set容器支持大部分的map操作,这两种例外是:set不支持下标操作,而且也没有mapped_type类型,在set容器中,value_type不是pair类型,而是与key_type相同的类型.它…
年3月,dr.dobb's journal特约记者, 著名技术书籍作家al stevens采访了stl创始人alexander stepanov. 这份访谈纪录是迄今为止对于stl发展历史的最完备介绍, 侯捷先生在他的stl有关文章里推荐大家阅读这篇文章. 因此我将该文全文翻译如下: q: 您对于generic programming进行了长时间的研究, 请就此谈谈.a: 我开始考虑有关gp的问题是在70年代末期, 当时我注意到有些算法并不依赖于数据结构的特定实现,而只是依赖于该结构的几个基本的…
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试:且看一个简单例程 2.1 引子 2.2 例程实作 2.3 历史的评价 2.4 如何运行 作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的.STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心 并非昙花一现.本教程旨在传播和普及STL的基础知识,若能借此机会为ST…
SGI -- Silicon Graphics[Computer System] Inc.硅图[计算机系统]公司. STL -- Standard Template Library 标准模板库.   容器的概念 所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来. 容器是指容纳特定类型对象的集合.依据数据在容器中排列的特性,容器可概分为序列式(sequence)和关联式(associative)两种. 迭代器是一种检查容器内元素并遍历元素的数据类型.它提供类似…
STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来的.现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.        STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方…
本文转载自水目沾博客:http://www.cnblogs.com/zhuwbox/p/3699977.html   向大师致敬 一般而言,我们习惯的 C++ 内存配置操作和释放操作是这样的: 1 class FOO{}; 2 FOO *pf = new FOO; 3 delete pf; 我们看其中第二行和第三行,虽然都是只有一句,但是都完成了两个动作.但你 new 一个对象的时候两个动作是:先调用::operator new 分配一个对象大小的内存,然后在这个内存上调用FOO::FOO()构…
ANSI/ISO的C++ STL规范版本正式通过以后,各个C++编译器厂商就可以依照标准所描述的原型去实现C++ STL泛型库,于是出现多种符合标准接口,但具体实现代码不同的泛型库,主要有: HP STL HP STL是Alexandar Stepanov在惠普Palo Alto实验室工作时,与Meng Lee合作完成的.HP STL是C++ STL的第一个实现版本,而且是开放源码.其它版本的C++ STL一般是以HP STL为蓝本实现出来的. SGI STL 由Silicon Graphics…
一般而言,我们习惯的 C++ 内存配置操作和释放操作是这样的: class FOO{}; FOO *pf = new FOO; delete pf; 我们看其中第二行和第三行,虽然都是只有一句,当是都完成了两个动作.但你 new 一个对象的时候两个动作是:先调用::operator new 分配一个对象大小的内存,然后在这个内存上调用FOO::FOO()构造对象.同样,当你 delete 一个对象的时候两个动作是:先调用FOO::~FOO() 析构掉对象,再调用::operator delete…
最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用. 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器: 这里说的STL容器,但主要则是指容器,字符串类,但其实可以推广到在STL中提供的任何类型,这里说的公共接口,是指需要暴露给客户的sdk头文件,包括函数签名,或者类成员变量:也可以说,不要在暴露给客户的头文件中包含STL的头文件. 原因分析为什么有这个结论,我们可以从几个方面来论述: 客户端使用的STL版本可能不同因为STL作为标准库…
1 介绍 我最开始结束C++编程是从DOS下的Borland C++开始的.那时他们在最新版本3.1中就包含了一套模板库用来做collection.那真是个好东东.当我开始使用Visual C++ 2.2的时候,我甚至试图去把Borland公司的collection模板库嵌入到Visual C++中去,但是没有成功.唯一可行的解决方案是切换到微软(Microsoft)的collection上,它是MFC的一部分分.但总是有些问题,其原因如下: 一旦实现部分已经代码写完,很难从一种容器(conta…
1.C++各大有名库的介绍--C++标准库 2.C++各大有名库的介绍--准标准库Boost 3.C++各大有名库的介绍--GUI 4.C++各大有名库的介绍--网络通信 5.C++各大有名库的介绍--XML 6.C++各大有名库的介绍--科学计算 7.C++各大有名库的介绍--游戏开发 8.C++各大有名库的介绍--线程 9.C++各大有名库的介绍--序列化 10.C++各大有名库的介绍--字符串 11.C++各大有名库的介绍--综合 12.C++各大有名库的介绍--其他库 13.C++名人的…
CJOJ 1308 [HNOI 2002 ]营业额统计 / CodeVS 1296 营业额统计(STL,二分) Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是一项相当复杂的工作.由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营…
STL概貌                                                                                                STL 包含 5 个主要的部分 ·算法(Algorithm):能运行在不同容器(container)上的计算过程 ·容器(Container):能够保留并管理对象的对象 ·迭代器(Iterator):算法存取容器(algorithm-access to containers)的抽象,以便算法可以应…
1 STL的string 1 String概念 string是STL的字符串类型,通常用来表示字符串.而在使用string之前,字符串通常是用char*表示的.string与char*都可以用来表示字符串,那么二者有什么区别呢. string和char*的比较 string是一个类, char*是一个指向字符的指针. string封装了char*,管理这个字符串,是一个char*型的容器. string不用考虑内存释放和越界. string管理char*所分配的内存.每一次string的复制,取…
说明:本文仅供学习交流.转载请标明出处.欢迎转载! 本文的參考文献为:<STL源代码剖析>侯捷        (1)HP STL:全部STL的祖先版本号,由C++之父Alexander Stepanov和Menge Lee共同完毕,能够公开改动但必须在全部的文件里加上HP的版本号生命和运用权限声明.        (2)PJ STL:继承了HP STL,由P.J.Plauger开发,被微软的Visual C++採用,存放文件夹为\:msdev\VC98\Include能找到STL头文件,不能公…
STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力.       map中key值是唯一的.集合中的元素按一定的顺序排列.元素插入过程是按排序 规则插入,所以不能指定插入位置.       map的具体实现采用红黑树变体的平衡二叉树的数据结构.在插入操作和删除操作 上比vector快.       map可以直接存取key所对应的value,支持[]操作符,如m…
1. STL的六大组件: 容器(Container) 算法(Algorithm) 迭带器(Iterator) 仿函数(Function object) 适配器(Adaptor) 空间配置器(allocator) #include <iostream> #include <vector> #include <list> #include <algorithm> using namespace std; int main() { //容器: vector<…
说明:我认为要读懂STL中allocator部分的源码,并汲取它的思想,至少以下几点知识你要了解:operator new和operator delete.handler函数以及一点模板知识.否则,下面你很可能看不大明白,补充点知识再学习STL源码比较好. 下面会结合关键源码分析C++STL(SGI版本)的内存配置器设计思想.关键词既然是“思想”,所以重点也就呼之欲出了. 1.allocator的简短介绍 我阅读的源码是SGI公司的版本,也是看起来最清楚的版本,各种命名最容易让人看懂.alloc…
问题描述 为了增加公司收入,F公司新开设了物流业务.由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道.然而,F公司现在只安排了小明一个人负责所有街道的服务. 任务虽然繁重,但是小明有足够的信心,他拿到了城市的地图,准备研究最好的方案.城市中有n个交叉路口,m条街道连接在这些交叉路口之间,每条街道的首尾都正好连接着一个交叉路口.除开街道的首尾端点,街道不会在其他位置与其他街道相交.每个交叉路口都至少连接着一条街道,有的交叉路口可能只连接着一条或两条街…