vector和list为STL中的顺序容器,顺序容器会依次维护第一个到最后一个元素,在顺序容器上,我们主要的操作就是迭代。

头文件:
#include<vector>
#include<list>
1、vector
特点:
连续存储结构
随机访问和尾端插入\删除操作效率高
动态的内存空间扩展(与内建数据的区别)
内存分配原理:
首先分配一块内存空间进行预备存储,当存储元素所需内存超过这个空间之后,则再整体重新分配一个更大的存储空间。扩充空间的过程如下:
(1)分配一块新的内存空间;
(2)将原空间内的元素复制到新空间中;
(3)释放原来的存储空间
size()返回的是当前存储的元素个数;
capacity()返回的是当前可存储的元素个数(即预分配存储空间的大小);

成员函数:
c.assign(beg,end)             将[beg; end)区间中的数据赋值给c。 
c.assign(n,elem)              将n个elem的拷贝赋值给c。
c.at(idx)                     传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back()                      传回最后一个数据,不检查这个数据是否存在。
c.begin()                     容器中第一个元素的迭代器。
c.capacity()                  返回容器最大存储容量。
c.clear()                     移除容器中所有数据。
c.empty()                     判断容器是否为空。
c.end()                       容器中最后一个元素下一个地址迭代器。
c.erase(pos)       删除pos位置的数据,传回下一个数据的位置。
c.erase(beg,end)              删除[beg,end)区间的数据,传回下一个数据的位置。
c.front()                     传回第一个数据。
c.insert(pos,elem)            在pos位置插入一个elem拷贝,传回新数据位置。
c.insert(pos,n,elem)          在pos位置插入n个elem数据。无返回值。
c.insert(pos,beg,end)         在pos位置插入在[beg,end)区间的数据。无返回值。
c.max_size()                  返回容器中最大数据的数量。
c.pop_back()                  删除最后一个数据。
c.push_back(elem)             在尾部加入一个数据。
c.rbegin()                    传回一个逆向队列的第一个数据迭代器。
c.rend()                      传回一个逆向队列的最后一个数据的下一个位置迭代器。
c.resize(num)                 重新指定容器的长度。
c.reserve()                   保留适当的容量。
c.size()                      返回容器中实际数据的个数。
c1.swap(c2)                   将c1和c2元素互换。
swap(c1,c2)                   同上操作。

构造函数与析构函数:
vector<Elem> c
vector <Elem> c1(c2)
vector <Elem> c(n)
vector <Elem> c(n, elem)
vector <Elem> c(beg,end)
c.~ vector <Elem>()

2、list
特点:
非连续存储结构,底层为双链表实现
每个结点包括本元素值、前向指针、后向指针,额外的指针维护带来更多的内存开销
随机插入\删除效率高,随机访问效率低
不支持下标操作([])和.at()操作

 list成员函数:
assign() 给list赋值
back() 返回最后一个元素
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回list的配置器
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge() 合并两个list
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
rbegin() 返回指向第一个元素的逆向迭代器
remove() 从list删除元素
remove_if() 按指定条件删除元素
rend() 指向list末尾的逆向迭代器
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice() 合并两个list
swap() 交换两个list
unique() 删除list中重复的元素

STL——vector和list的更多相关文章

  1. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  2. STL vector

    STL vector vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问 ...

  3. STL vector用法介绍

    STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...

  4. STL vector+sort排序和multiset/multimap排序比较

    由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...

  5. STL vector 用法介绍

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  6. STL vector使用方法介绍

    介绍 这篇文章的目的是为了介绍std::vector,怎样恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  7. stl——vector详解

    stl——vector详解 stl——vector是应用最广泛的一种容器,类似于array,都将数据存储于连续空间中,支持随机访问.相对于array,vector对空间应用十分方便.高效,迭代器使ve ...

  8. C++STL vector详解(杂谈)

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  9. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...

  10. 浅谈C++ STL vector 容器

    浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...

随机推荐

  1. python入门16 递归函数 高阶函数

    递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...

  2. 数字(int)转字符串和字符串转数字(int)

    室友去面试,问了一个字符串转成数字的算法题,室友没搞出来,我心想,这个不是很简单的吗?于是动手在纸上画了画代码.画完后,总感觉哪里不对,最后一个个挖掘,才发现,尼玛,这到处都是坑啊---特此记录一下中 ...

  3. Android(java)学习笔记20:UDP协议发送数据

    1. UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: package cn.itcast_02; import java.io.IOException; import java.net ...

  4. BZOJ1856:[SCOI2010]字符串(卡特兰数,组合数学)

    Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgw ...

  5. 剑指offer23 从上往下打印二叉树

    没有把队列的头部弹出,出现内存错误:

  6. 【洛谷P2607】[ZJOI2008]骑士

    骑士 题目链接 这道题一看,似乎和舞会是一样的,然而它并没有保证是一棵树 但是,对于每个连通块,必有相同的点数和边数,这样的图一定是一棵树上加一条边 这条边一定回使图中形成一个环,这种图貌似叫“基环树 ...

  7. SqlSugar之SqlQueryDynamic返回值处理

    现在有个需求,有一张表每个月表名都会变的,但结构是一样的,我们不能再用类映射来完成的,我不能每个月都去手动添加,我们只能使用sql语句来完成这个需求.为了方便我这边选择的是SqlQueryDynami ...

  8. Oracle system 忘记密码,怎么修改密码

    1.win键+R键,输入cmd,打开命令提示符.(小黑窗) 2.输入:sqlplus /nolog 3.输入conn /as sysdba(以超级管理员身份登录 4.输入alter user syst ...

  9. Plupload使用API

    Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...

  10. 有个数组 我现在需要把数组里面的值按照n个一组,赋予一个新的数组

    有个数组  我现在需要把数组里面的值按照七个一组,赋予一个新的数组