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。不能使用([]),迭代器只重载了++,指向下一个元素,但由于离散存储,迭代器进行算术运算没法达到想要的目的
  • 相关阅读:
    JavaOOP对象和封装
    使用socket实现文件复制
    多线程模拟银行取款
    初入多线程示例展示--Runner
    初步学习多线程3
    初步学习多线程2
    初步线程学习1
    守护线程_setDaemon()
    多线程_yield()和sleep()方法比较
    java_多线程_优先级
  • 原文地址:https://www.cnblogs.com/sunstars/p/3991379.html
Copyright © 2011-2022 走看看