• STL的一些基本操作


    STL是一个神奇的东西,在NOIP考试中非常重要。

    什么是STL?

    STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
    从逻辑层次来看,在STL中体现了泛型化程序设计的思想,引入了诸多新的名词,比如像需求(requirements),概念concept),模型(model),容器(container),算法(algorithmn),迭代器(iterator)等。与OOPobject-oriented programming)中的多态polymorphism)一样,泛型也是一种软件的复用技术;从实现层次看,整个STL是以一种类型参数化的方式实现的,这种方式基于一个在早先C++标准中没有出现的语言特性--模板template)。
    并且不要以为STL慢,如果在开O2的情况下还是非常快的。毕竟是一群超级神犇发明出来的。
    而容器相当于数据结构,迭代器相当于指针,
    容器:
    SET
    它是集合,自带去重排序,又因为是使用红黑树,所以很快。
    操作也很多:

    begin()        ,返回set容器的第一个元素
     
    end()      ,返回set容器的最后一个元素
     
    clear()          ,删除set容器中的所有的元素
     
    empty()    ,判断set容器是否为空
     
    max_size()   ,返回set容器可能包含的元素最大个数
     
    size()      ,返回当前set容器中的元素个数
     
    rbegin     ,返回的值和end()相同
     
    rend()     ,返回的值和rbegin()相同
     
     

    MAP
    MapSTL的一个关联容器,它提供一对一的数据 处理能
    (其中第一个可以称为关键字,每个关键字只能map出现一次,第二个可能称为该关键字的值)
     
    由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。
     
    这里说下map内部数据的组织,map内部自建一颗红黑树( 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处
    操作:
    其实map最重要的特点就是它的下标可以用任何的tape,所以非常好用还可以判断某一个下标是不是出现了。并且因为它相当于一个动态数组,所以在某些时候它会省空间。 
    VECTOR
    vector是真正意义上的动态数组,并且在C++里,借用一下刘汝佳的话来说,它看上去是一个是一等公民,因为他可以直接赋值,还可以作为函数的返回值。
    这是vector的遍历
    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;

    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

    vec.erase(vec.begin()+2);删除第3个元素

    vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

    vec.size(); 向量大小

    vec.clear();清空向量

  • 相关阅读:
    Tensor:Pytorch神经网络界的Numpy
    你真的懂语音特征吗?
    ES高级(17) 使用基础(5)安装(5) Linux 集群
    ES高级(16) 使用基础(4)安装(4) Linux 单机
    ES高级(15) 使用基础(3)安装(3) Windows 集群
    ES高级(14) 使用基础(2)安装(2) 概念
    ES入门 (13)Java API 操作(4)DQL(1) 请求体查询/term 查询,查询条件为关键字/分页查询/数据排序/过滤字段/Bool 查询/范围查询/模糊查询/高亮查询/聚合查询/分组查询
    ES入门 (12)Java API 操作(3)DML 新增文档/修改文档/查询文档/删除文档/批量操作
    ES入门 (11)Java API 操作(2)DDL 索引操作
    ES入门 (10)Java API 操作(1)准备
  • 原文地址:https://www.cnblogs.com/liuwenyao/p/9332503.html
Copyright © 2020-2023  润新知