zoukankan      html  css  js  c++  java
  • STL

    c++标准模板库

    STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来

    的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 

    STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类 

    组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。 

    STL由一些可适应不同需求的集合类(collectionclass),以及在这些数据集合上操作的算法(algorithm)构成。所有组件都由模板(template)构成,其元素可以是任意类型

    1. STL组件

    容器(Container) - 管理某类对象的集合

    迭代器(Iterator) - 在对象集合上进行遍历

    算法(Algorithm) - 处理集合内的元素

    容器适配器(container adaptor)

    函数对象(functor)

    2.  STL容器类别

    序列式容器-排列次序取决于插入时机和位置

    关联式容器-排列顺序取决于特定准则

    3.  STL容器的共同能力

    所有容器中存放的都是值而非引用。如果希望存放的不是副本,容器元素只能是指针。

    所有元素都形成一个次序(order),可以按相同的次序一次或多次遍历每个元素

    4.  STL容器元素的条件

    必须能够通过拷贝构造函数进行复制

    必须可以通过赋值运算符完成赋值操作

    必须可以通过析构函数完称销毁动作

    序列式容器元素的默认构造函数必须可用

    某些动作必须定义operator ==,例如搜寻操作

    关联式容器必须定义出排序准则,默认情况是重载operator <

    5. STL容器的共同操作

    初始化 产生一个空容器    std::list<int> l;

    以另一个容器元素为初值完成初始化    

    std::list<int> l;

    std::vector<float>c(l.begin(),l.end());

    以数组元素为初值完成初始化

    int array[]={2,4,6,1345};

    std::set<int>c(array,array+sizeof(array)/sizeof(array[0]));

      与大小相关的操作(size operator)

    size()-返回当前容器的元素数量

    empty()-判断容器是否为空

    max_size()-返回容器能容纳的最大元素数量

    比较(comparison)

    ==,!=,<,<=,>,>=

    比较操作两端的容器必须属于同一类型

    如果两个容器内的所有元素按序相等,那么这两个容器相等

    采用字典式顺序判断某个容器是否小于另一个容器

    链接:https://blog.csdn.net/xxh20171777/article/details/80469592

    萍水相逢逢萍水,浮萍之水水浮萍!
  • 相关阅读:
    js堆和栈
    document.write的用处!
    nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模块的Javascript
    addEventListener和attachEvent的区别
    保留两位小数
    文字图片飞舞
    CSS3 2D 转换
    安装phpstudy之后发现80端口被占用
    docker 部署项目的实战操作
    性能实战第一天基础01-设计测试场景以及如何做性能测试
  • 原文地址:https://www.cnblogs.com/AIBigTruth/p/9596739.html
Copyright © 2011-2022 走看看