zoukankan      html  css  js  c++  java
  • [知识点]C++中STL容器之vector

    零、STL目录

      1、容器之map

      2、容器之vector

      3、容器之set

    一、前言

      关于STL和STL容器的概念参见STL系列第一篇——map(见上)。今天介绍第二个成员——vector。

    二、用途

      vector的本质是数组,但更为灵活,高级。数组在定义时需要确定范围,可能存在浪费内存或者越界两大问题,而可以动态拓展的vector完美解决了这两个问题,它相当于是可以分配拓展的数组。vector支持各种数据类型。

    三、构造与功能

    1、构造

    struct node {
        int x;
        char y; 
    };
    
    vector <int> a;
    vector <string> b;
    vector <node> c;
    
    vector <int>::iterator it;

      支持各种数据类型,结构体亦可。迭代器不再介绍,详情参见map(见上)。

    2、功能

      vector实在算是STL容器中最好理解的了,同时有了前面map的铺垫,函数大可大同小异,大部分都不详细介绍了,直接给个列表。

     

    两个没有提及的函数单独拎出来——lower_bound和upper_bound。

    首先,其意义与map中提及的一致:lower_bound()返回值 >= 给定元素的第一个位置,upper_bound()返回值 > 给定元素的第一个位置。

    然后,这俩函数能被用于:map, vector, set, multiset。map, set没什么特别的,而在vector中用法略有不同。

    在vector中,两个函数存在三个参数:(首地址,尾地址,值)。由于sort对vector的完美支持,我们可以利用这两个函数进行快速的区间大小查询。首先对数组进行快速排序(默认从小到大),然后利用lower_bound函数二分查找第一个大于等于该值的位置。具体运用参见:《[分块] 数列分块入门1-9》中的“分块练习2”。

  • 相关阅读:
    初学Cocos2dx
    炸弹人NABCD分析
    求二维整数数组中最大联通子数组的和
    大道之简读书笔记1
    求首位相连二维数组最大子矩阵的和
    求首位相连一维数组最大子数组的和
    求二维数组最大子数组的和
    程序员修炼之道读后感3
    电梯调度需求分析
    课堂作业第四周课上作业二
  • 原文地址:https://www.cnblogs.com/jinkun113/p/10691919.html
Copyright © 2011-2022 走看看