C++ 顺序容器的操作

1.顺序容器(vector set list)的操作包括:

1)添加元素

2)删除元素

3)设置容器大小

4)获取容器元素


2.容器类型别名

size_tpye,无符号整型,容器长度

iterator,容器迭代器

const_iterator,只读容器迭代器

reverse_iterator,逆序迭代器

const_reverse_iterator只读逆序迭代器

difference_tpye,两个迭代器差值,有符号整数,可为负数

value_tpye元素类型

reference,元素的引用

const_reference 元素的常量引用

void test()
{
    int i;
    vector<int>::size_type t;
    vector<int>::iterator it;
    vector<int>::const_iterator cit;
    vector<int>::reverse_iterator rit;
    vector<int>::difference_type dt;
    vector<int>::value_type vt;
    vector<int>::reference ret=i;
}

3.begin和end成员

c.begin()指向第一个元素的迭代器
c.end()指向最后一个元素的迭代器
c.rbegin()逆序迭代器,指向容器的最后一个元素
c.rend()逆序迭代器,指向容器第一个元素的前面
void test2()
{
    vector<int> v;
    vector<int>::iterator it1= v.begin();
    vector<int>::iterator it2= v.end();

    vector<int>::reverse_iterator it3 = v.rbegin();
    vector<int>::reverse_iterator it4 = v.rend();
}


4.顺序容器的操作

c.push_back(e)在容器末尾添加一个元素

c.push_front(e)在容器前端添加一个元素(只有list和deque可以,vector不可以)


c.insert(p,e)在指定位置插入

c.insert(p,n,e)在指定位置添加n个元素

c.insert(p,b,e)在指定位置插入b迭代器开始e结束个元素

注意:添加或删除元素,会使迭代器失效

4.vector的内容分配策略

vector中的元素的连续存储的,以便通过索引的方法快速访问

但是如果分配的内容空间使用完后,必须重新分配内存空间,并且要移动所有元素,这样他的性能就会降低,但事实上,vector分配的内存空间会比他的实际使用空间大,这样就可以提高性能。

例如:

void test4()
{
vector<int> v;

cout<<v.size()<<endl;
cout<<v.capacity()<<endl;
cout<<"--------------------"endl;

for(int i=1;i<=10;i++)
v.push_back(i);

v.reserve(30)//预留空间
cout<<c.size()<<endl;//当前大小
cout<<v.capacity()<<endl;//空间大小
}



5.顺序容器的选择

1.vector和deque可以对元素进行快速的随机访问,但是插入和删除效率较低,因为需要移动其他元素

2.list在插入和删除上比较快,但是随机访问比较慢,因为它的元素不连续。

3.容器的选择

1)如果程序要求随机访问元素,应该使用vector和deque容器

2)如果程序必须要在中间插入或者删除,则使用list

3)如果不是在中间位置,而是在首位置插入或者删除元素,则用deque(双向队列)


6.容器的适配器

1.适配器是一种设计模式,即在原有接口添加新的接口,使其适合另外一种操作。

2.顺序容器有三种适配器

stack后进先出(LIFO)栈

queue先进先出(FIFO)

priority_queue 优先级队列

3.适配器的类型和声明

size_type  大小

value_type 元素类型

container 容器类型

注意:stack queue是基于deque实现,所以不能使用vector和list构造,而priority_queue在vector容器上实现




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值