vector list deque

说明:

1.list由双向链表实现的,不支持[]和at()函数,有较快的插入和删除函数,同时提供了sort,remove,remove_if ,reverse,merge,splice,unique等独有的函数

2.deque也是动态数组实现的,和vector相比可以push_front,push_back,pop_front,pop_back;deque和list都没有capacity()和reserve函数,不支持内存重分配机制;deque插入删除元素很慢;

 

 

vector

list

deque

头文件

<vector>

<list>

<deque>

定义及初始化

vector<string> myvt;

myvt.push_back(“123”)

list<int>list1;

list<int>list1(10);

list<int>list1(10,1);

list<int>list2(list1);

list<int>list3(list2.begin(),list.end());

 

list<int>list4.assign(list3.begin(),list3.end()) 重置元素

deque<int> dq;

deque<int>dq(10);

deque<int>(10,3);

deque<int>dq(dq1)

deque<int>dq(dq1.begin(),dq1.end())

 

dq.assign(dq2.begin(),dq2.end());

dq.assign(5,4);

容量

1)myvt.size();

实际元素的多少

2)myvt.capacity();

实际能容那的最多元素,测试好像与size相同

3)myvt.max_size();

最大元素个数

4)myvt.resize();

修改容器大小,同时改变size()和capacity()的大小

5)myvt.reserve();

预设容器容量

改变的capacity()大小

list1.size();实际元素多少

list1.max_size();最大允许容量

 

list1.resize();调整容量大小

dq.size()

deque.resize(n,x)

调整为n,元素为x

(只有vector和deque可以这样调整)

dq.max_size()最大容量

是否为空

myvt.empty()

myvt.clear() 清空

List1.empty()

List1.clear()

dq.empty()

 

遍历

cout<<myvt.at(i);

迭代器遍历

Cout<<*it;

算法:for_each

void out(int a)

{

         cout << a;

}

for_each(myvt.begin(),myvt.end(),out)

同理

提供[]和at()

允许

dq[i]=10;

元素访问

1)  myvt.at(i)

2)  myvt[i]

3)  myvt.front() 第一个元素

4)  myvt.back()最后一个元素

没有at 和[] 访问数据的功能

List1.front();

List1.back();

1)提供[]和at()

允许dq[i]=10;

2)dq.front();

3)dq.back();

 

迭代器

1)  begin() 第一个元素

2)  end()最后一个元素的下一个位置

3)  rbegin()逆向第一个元素

4)  rend()逆向最后一个元素的下一个位置

 

 

查找

vector没有find函数

vector<int>::iterator it;

it=find(myvt.begin(), myvt.end(), 3);         cout << *it;

返回迭代器

参数:

1)  开始

2)  结束

3)  查找目标

没有find函数

没有find函数

排序

bool compare(int &m, int &n)

{

         return m>n;//从大到小

}

sort(myvt.begin(),myvt.end(),compare)

compare函数定义排序的方向

list.sort() 从小到大排序

 

插入

1)  insert 任位置插入

myvt.insert(myvt.begin(),-1)

2)myvt.push_back() 尾部插入

1)list1.push_front()

2) list.push_back();

3)list.insertlist.begin(),5)

  List.insert(list.ebgin(),5(个数),5)

  list.insert(list.begin(),list2.begin(),list2.end());

1)      dq.push_front();

2)      dq.push_back();

3)      dq.insert(dq,begin(),3);

dq.insert(dq.begin(),3(个数),3);

dq.insert(dq.begin(),dq2.begin(),dq2.end());

移除

1)  myvt.pop_back()尾部删除

2)  myvt.clear() 清除元素

3)  myvt.erase(myvt.begin())删除开始元素,也可以删除一定范围的元素

remove算法

1) list.pop_front()

2) list.pop_back();

3)list.erase(it)

4)list.clear() 清除元素

5)list.remove(9)

6)list.remove_if()

bool isodd(int a)

{

       return a % 2 == 1;

}

l1.remove_if(isodd);

isodd函数为真则移除

 

1)  dq.pop_front();

2)  dq.pop_back();

3)  dq.erase(dq.begin());

4)  dq.clear()

交换

myvt.swap()函数实现瞬间交换

list3.swap(list1)交换的同时,列表的大小也交换了

dq.swap(dq2)

运算符函数

支持==,>=,<=,!=,>,<等判断比较符号

支持==,>=,<=,!=,>,<等判断比较符号

支持==,>=,<=,!=,>,<等判断比较符号

合并函数

没有

1)合并前,两个序列是有序的,并且顺序相同

list1.merge(list2)

2)  splice函数

list1.splice(list1.end(),list2);合并list1和list2

list1.splice(list1.end(),list2,list2.begin())

把list2开始元素插入list1后边

List1.splice(list1.end(),list2,list2.begin(),list2.end())

将list2种元素插入list1中

 

排除相同元素

没有

list1.sort()

list1.unique() 移除相邻的相同元素,一般是排序以后使用

没有

颠倒

没有

list.reverse() 逆序链表

没有

 

转载于:https://www.cnblogs.com/ranranblog/p/5631438.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值