zoukankan      html  css  js  c++  java
  • 浅谈 Vector

    浅谈Vector

    @

      这里我主要说的是C++的vector,vector是一种顺序容器,顺序容器区别去有序容器,也就是的存储位置与大小无关,只与数据加入文件是的顺序有关。顺序容易还包括deque、list、forword_list、array、string。

    注意: 随着C++泛型编程的逐渐强大,在实际操作中尽量减少使用数组,因为容器的出现,可以使我们在实际开发项目中将数组的使用降至最低。

    1、容器基本操作

    类型别名 含义
    iterator 顾名思义,迭代器
    const_iterator 只读迭代器
    size_type 无符号整型,最大值为容器的大小
    difference_type 带符号整形,两个迭代器之间的距离
    value_type 元素类型
    const_reference 元素const左值类型

    2、vector 初始化

    #include <vector>
    using namespce std;
    int main()
    {
        vector<int> vec ; //默认构造函数
        vector<int> vec2(vec) ; //拷贝构造函数
        vector<int> vec3(b,e); //利用迭代器进行初始化
        vector<int> vec4{1,2,3,4}; //常用的初始化操作
        vector<int> vec5(10); //创建10个元素,值默认为0
        vector<int> vec6(10,6); //创建10个元素,值初始化6
    }
    

      为了书写方便,后面的书写采用简便书写的方式,这里默认大家已经有了main函数;

    3、vector的赋值与swap

    vec = vec2; //将vec2的元素赋值给vec2
    vec = {1,2,3,4,5}; //vec替换为列表元素
    vec.swap(vec2); //交换两者的元素
    swap(vec1,vec2); //等价
    
    vec.assign(b,e); //vec里面的元素换为迭代器b e之间的内容
    vec.assign(n,t);//vec里面的元素更改为n个t
    vec.assign(i1); //vec的内容更改为列表i1;
    

    4、vector的增删改除

    1.增加元素

    vec.insert(p,t);// 在迭代器p所指的位置之前插入元素t,返回新插入元素的迭代器      直接法
    vec.insert(p,n,t); //与vec.insert(p,array)相同        抽象法
    vec.insert(p,b,e); //在迭代器p位置插入迭代器b,e之间的元素,返回新插入第一个元素的迭代器      间接法
    vec.insert(p,array); //在迭代器p位置插入元素值列表array,返回第一个元素的迭代器      直接法
    
    vec.push_back(t);//在vec末端插入元素t,返回void
    vec.push_front(t);//在vec开始端插入t,返回void
    

    2.访问元素

    vec.back();  //返回最后一个元素的引用
    vec.front(); //返回第一个元素的引用
    
    vec[n];      //下标访问 返回引用
    vec.at[n];   //at访问 比较安全 如果越界 抛出out of range 的异常 返回引用
    

    3.删除元素

    vec.pop_back(); //删除vec的尾元素 返回void
    vec.pop_front();//删除vec的首元素,返回void
    
    vec.erase(p);  //删除迭代器p所指的元素 返回删除元素的前一个元素的迭代器
    vec.erase(b,e);//删除迭代器b,e之间的元素 ,返回最后一个被删除元素的之后的迭代器
    
    vec.clear();   //删除vec的所有元素
    

    4.元素的大小

    vec.size();//返回元素的数目
    vec.max_size();//返回可保存元素的最大大小
    vec.empty();//vec是否为空
    
  • 相关阅读:
    建模:确定服务的边界——《微服务设计》读书笔记
    linux & windows下重启oracle
    Git配置用户名与邮箱
    Git中使用amend解决提交冲突
    微服务架构师的职责——《微服务设计读书笔记》
    MAC下配置ssh让SourceTree通过秘钥访问远程仓库
    微服务的概念——《微服务设计》读书笔记
    Uva 11572 唯一的雪花
    Codeforces Round #404 (Div. 2) ABC
    tyvj 1031 热浪 最短路
  • 原文地址:https://www.cnblogs.com/teaurn/p/11581186.html
Copyright © 2011-2022 走看看