C++学习,标准库 <deque>

C++中<deque> 是标准模板库(STL),它提供了双端队列(double-ended queue)的实现。双端队列是一种允许在两端进行插入和删除操作的线性数据结构。<deque> 全称 "double-ended queue",它在C++中以模板类的形式存在,允许存储任意类型的数据。

<deque> 是一个动态数组,它提供了快速的随机访问能力,同时允许在两端进行高效的插入和删除操作。这使得 <deque> 成为处理需要频繁插入和删除元素的场景的理想选择。

主要特点:
动态大小:std::deque 可以根据需要动态地增加或减少其大小。
高效的两端操作:在 std::deque 的前端和后端进行插入和删除操作都是常数时间复杂度 O(1)。
随机访问:std::deque 支持随机访问,可以使用下标操作符 [] 和迭代器来访问元素。
非连续性存储:与 std::vector 不同,std::deque 的元素不必在内存中连续存储,这使得它在需要频繁地在两端进行操作的场景中比 std::vector 更加高效。

常用成员函数:

函数名称功能描述
deque()默认构造函数,创建一个空的 deque 容器。
deque(size_type n)创建一个包含 n 个默认值元素的 deque 容器。
deque(size_type n, const T& value)创建一个包含 n 个值为 value 的 deque 容器。
deque(initializer_list<T> il)使用初始化列表 il 构造 deque 容器。
operator=赋值操作符,赋值给 deque 容器。
assign()用新值替换 deque 容器中的所有元素。
at(size_type pos)返回 pos 位置的元素,并进行范围检查。
operator[](size_type pos)返回 pos 位置的元素,不进行范围检查。
front()返回第一个元素的引用。
back()返回最后一个元素的引用。
begin()返回指向第一个元素的迭代器。
end()返回指向末尾元素后一位置的迭代器。
rbegin()返回指向最后一个元素的逆向迭代器。
rend()返回指向第一个元素之前位置的逆向迭代器。
empty()检查容器是否为空。
size()返回容器中的元素个数。
max_size()返回容器可容纳的最大元素个数。
clear()清除容器中的所有元素。
insert(iterator pos, const T& value)在 pos 位置插入 value 元素。
erase(iterator pos)移除 pos 位置的元素。
push_back(const T& value)在容器末尾添加 value 元素。
pop_back()移除容器末尾的元素。
push_front(const T& value)在容器前端添加 value 元素。
pop_front()移除容器前端的元素。
resize(size_type count)调整容器大小为 count,多出部分用默认值填充。
swap(deque& other)交换两个 deque 容器的内容。
get_allocator()返回一个用于构造双端队列的分配器对象的副本。

示例:
#include <iostream>  
#include <deque> 
int main() {  
    std::deque<int> dq;  
  
    // 插入元素  
    dq.push_back(10);  
    dq.push_front(5);  
  
    // 访问元素  
    std::cout << "Front element: " << dq.front() << std::endl;  
    std::cout << "Back element: " << dq.back() << std::endl;  
  
    // 使用迭代器访问元素  
    for (auto it = dq.begin(); it != dq.end(); ++it) {  
        std::cout << *it << " ";  
    }  
    std::cout << std::endl;  
  
    // 删除元素  
    dq.pop_front();  
    dq.pop_back();  
  
    // 检查是否为空  
    if (dq.empty()) {  
        std::cout << "Deque is empty." << std::endl;  
    } else {  
        std::cout << "Deque is not empty." << std::endl;  
    }  
  
    return 0;  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值