list,vector相关函数与区别<<0922
list,vector的相关函数
除了不能使用push_front,以下的操作vector也能够使用,只不过是效率的区别
-
插入
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())//指定位置插入指定迭代器范围的元素
-
添加元素
lst.push_back("hangzhou"); lst.push_front("tianjin");
-
删除元素
lst.erase(it)//删除指定迭代器位置的元素,此时it迭代器失效,若这局在循环体里面,必须在前面加上it = , lst.erase(it1,it2);//删除迭代器给定范围的元素
-
重置大小
lst.reserve(10);//可以变小也可以变大(默认构造函数) 设置之后lst.capacity() = 10,此时如果再push_back一个元素进去,capacit变成20.
list和vector的区别
- vector拥有一段连续的内存空间,因此支持随机存取,如果需要高效的随即存取,而不在乎插入和删除的效率,使用vector。可以使用下标操作([]),迭代器可以进行算术运算(连续),
- list拥有一段不连续的内存空间(双向链表),因此支持随机存取,如果需要大量的插入和删除,而不关心随即存取,则应使用list。不能使用([]),迭代器只重载了++,指向下一个元素,但由于离散存储,迭代器进行算术运算没法达到想要的目的