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. SQL Server ->> 建立linked server到Azure SQL Server

    EXEC master.dbo.sp_addlinkedserver @server = N'<nick_name_to_use>', @srvproduct=N'', @provider ...

  2. 框架页面jquery装载

  3. Angular 5.x 学习笔记(2) - 生命周期钩子 - 暂时搁浅

    Angular 5.x Lifecycle Hooks Learn Note Angular 5.x 生命周期钩子学习笔记 标签(空格分隔): Angular Note on cnblogs.com ...

  4. March 2 2017 Week 9 Thursday

    The first duty of love is to listen. 爱的首要责任是倾听. Yesterday, I read an article that says a successful ...

  5. MAVEN本地下载、安装

    1. 安装jdk (此处版本选择1.7以上) 此处不做安装说明!!! 2.Eclipse.配置及安装 此处不做安装说明!!! 3.maven安装包(此处选择apache-maven-3.5.2-bin ...

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

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

  7. BAT的云

    近期,关于用国内那家云非常纠结! 我也来说道说道各家云. 首先,说说我想要的云服务(按优先级): 0.最好能提供二级域名.移动互联网时代,顶级域名必需要吗?在手机浏览器上输入长长的域名非常蛋痛(即不要 ...

  8. POJ 最小球覆盖 模拟退火

    最小球覆盖:用半径最小的球去覆盖所有点. 纯粹的退火算法,是搞不定的,精度不够,不然就会TLE,根本跑不出答案来. 任取一点为球心,然后一点点靠近最远点.其实这才是最主要的. 因为:4个点确定一个球, ...

  9. POJ 1986 Distance Queries 【输入YY && LCA(Tarjan离线)】

    任意门:http://poj.org/problem?id=1986 Distance Queries Time Limit: 2000MS   Memory Limit: 30000K Total ...

  10. POJ 2182 Lost Cows 【树状数组+二分】

    题目链接:http://poj.org/problem?id=2182 Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...