• list,vector相关函数与区别<<0922


    list,vector的相关函数

    除了不能使用push_front,以下的操作vector也能够使用,只不过是效率的区别

    1. 插入

       list<string>::iterator it = find(lst.begin(), lst.end(), "tianjin");
       lst.insert(it, "fenghua"); 
       lst.insert(it,3,"beijing");//指定位置插入3个元素
       lst,insert(it,vec.begin(),vec.end())//指定位置插入指定迭代器范围的元素
      
    2. 添加元素

       lst.push_back("hangzhou");
       lst.push_front("tianjin");
      
    3. 删除元素

       lst.erase(it)//删除指定迭代器位置的元素,此时it迭代器失效,若这局在循环体里面,必须在前面加上it = ,
       lst.erase(it1,it2);//删除迭代器给定范围的元素
      
    4. 重置大小

       lst.reserve(10);//可以变小也可以变大(默认构造函数)
       设置之后lst.capacity() = 10,此时如果再push_back一个元素进去,capacit变成20.
      

    list和vector的区别

    • vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector。可以使用下标操作([]),迭代器可以进行算术运算(连续),
    • list拥有一段不连续的内存空间(双向链表),因此支持随机存取,如果需要大量的插入和删除,而不关心随即存取,则应使用list。不能使用([]),迭代器只重载了++,指向下一个元素,但由于离散存储,迭代器进行算术运算没法达到想要的目的
  • 相关阅读:
    Gin框架结合gorm实现mysql增删改查
    Gin框架安装使用
    Golang常用排序算法比较
    Golang获取时间戳及格式化
    Golang使用goroutine交替打印序列
    Golang基础编程(六)-并发编程
    Golang基础编程(五)-指针
    Golang基础编程(四)-Map(集合)、Slice(切片)、Range
    模块化前端开发入门指南(三)
    模块化前端开发入门指南(二)
  • 原文地址:https://www.cnblogs.com/sunstars/p/3991379.html
Copyright © 2020-2023  润新知