zoukankan      html  css  js  c++  java
  • 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。不能使用([]),迭代器只重载了++,指向下一个元素,但由于离散存储,迭代器进行算术运算没法达到想要的目的
  • 相关阅读:
    第四次作业—四则运算
    第四次作业—代码规范
    【欢迎来怼】事后诸葛亮会议
    软件工程——第七次作业
    第17次Scrum会议(10/29)【欢迎来怼】
    软件工程——第六次作业
    第10次Scrum会议(10/22)【欢迎来怼】
    软件工程——第五次作业
    欢迎来怼——第四次Scrum会议
    软件工程——第四次作业(3)
  • 原文地址:https://www.cnblogs.com/sunstars/p/3991379.html
Copyright © 2011-2022 走看看