C++ deque容器

deque : 双端数组, 可以对头端进行插入删除操作

deque与vector 区别

vector 对于头部的插入删除来说, 效率低, 数据量越大, 效率越慢
deque 相对而言, 头部的插入和删除比vector 速度快
vector 访问元素时, 的速度比deque块, 这和两者内部实现有关

deque 内部工作原理
deque内部有一个存储空间, 叫中控器, 维护每段缓冲区中的内容, 缓冲区存放真实数据
中控器维护的是每个缓冲区的地址, 使得使用deque时像一片连续的内存空间

deque构造函数

deque<T>, deqT;  // 默认构造形式
deque(beg, end); // 拷贝函数将beg, end 区间的元素拷贝给本身
deque(n, elem), // 构造函数将n个elem 拷贝给本身
deque(const deque &deq); // 拷贝构造函数

当使用const 对声明的时候deque , deque 容器的迭代器也要使用const 继续拧声明操作
譬如
iterator 迭代器要使用const_iterator,

deque容器赋初值

deque &operator=(const deque &deq) // 重载等号操作符
assign(beg, end);  // 将beg, end 区间中的元素拷贝赋值给本身
assign(n, elem); // 将n个elem拷贝赋值给本身

deque 大小操作

deque.empty(); // 判断容器是否为空
deque.size();  // 返回容器中元素的个数
deque.resize(num); // 重新制定容器的长度num, 若容器变长, 则以默认值填充新位置
                // 如果容器变短, 则末尾超出容器长度的元素被删除
deque.resize(num, elem); // 重新指定容器的长度为num, 若容器变长, 则以elem填充新位置
                    // 如果容器变短, 则末尾超出容器长度的元素被删除 

deque 插入和删除

push_back(elem);  // 在容器尾部添加一个数据
push_front(elem); // 在容器头部插入一个数据
pop_back(); // 删除容器最后一个数据
pop_front(); // 删除容器第一个数据

insert(pos, elem); // 在pos位置插入一个elem元素的拷贝, 返回新数据的新位置

insert(pos, n, elem); // 在pos位置插入n个elem数据, 无返回值
instrt(pos, beg, end); // 在pos位置插入beg end区间数据, 无返回值

deque_name.insert (iterator position, const value_type& val)
                or
deque_name.insert (iterator position, size_type n, const value_type& val)
                or
deque_name.insert (iterator position, InputIterator first, InputIterator last)

有关迭代器指向
*iter                //对iter进行解引用,返回迭代器iter指向的元素的引用
iter->men            //对iter进行解引用,获取指定元素中名为men的成员。等效于(*iter).men
++iter                //给iter加1,使其指向容器的下一个元素
iter++
--iter                //给iter减1,使其指向容器的前一个元素
iter--
iter1==iter2        //比较两个迭代器是否相等,当它们指向同一个容器的同一个元素或者都指向同同一个容器的超出末端的下一个位置时,它们相等 
iter1!=iter2   

clear() // 清空容器的所有数据
erase(beg, end) // 删除beg, end 区间的数据, 返回下一个数据的位置
erase(pos)// 删除pos位置的数据, 返回下一个数据的新位置

deque 数据存储

at(int idx); // 返回索引
operator[idx]; // 返回索引idx所指的数据
front() // 返回容器中第一个数据元素
back(); // 返回容器中最后一个数据元素

deque 排序

sort(iterator beg, iterator end) // 对beg和end区间元素进行排序 // 需要包含<algorithm>  // 从小到大的升序排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值