deque和queue比较

deque:双端队列,可以在头部和尾部进行快速的添加/删除操作 http://www.cplusplus.com/reference/deque/deque/

双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

Constructors 创建一个新双向队列
Operators 比较和赋值双向队列
assign() 设置双向队列的值
at() 返回指定的元素
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 返回真如果双向队列为空
end() 返回指向尾部的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回双向队列的配置器
insert() 插入一个元素到双向队列中
max_size() 返回双向队列能容纳的最大元素个数
pop_back() 删除尾部的元素
pop_front() 删除头部的元素
push_back() 在尾部加入一个元素
push_front() 在头部加入一个元素
rbegin() 返回指向尾部的逆向迭代器
rend() 返回指向头部的逆向迭代器
resize() 改变双向队列的大小
size() 返回双向队列中元素的个数
swap() 和另一个双向队列交换元素

 

queue:单端队列,http://www.cplusplus.com/reference/queue/queue/

 C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。

back() 返回最后一个元素
empty() 如果队列空则返回真
front() 返回第一个元素
pop() 删除第一个元素
push() 在末尾加入一个元素
size() 返回队列中元素的个数

deque常用操作:

    void example()
    {
        deque<int> deq;
        if (deq.empty()) {
            cout <<"deq is empty" << endl;
        }
        //尾部插入
        deq.push_back(3);
        deq.push_back(5);
        // 头部插入
        deq.push_front(1);
        deq.push_front(2);
        // 头部取值
        int top = deq.front();
        // 尾部取值
        int last = deq.back();
        for (size_t i = 0; i < deq.size(); ++i) {
            cout << deq[i] << " ";
        }
        cout<< endl << "top:" << top << " last:" << last << endl;
        deq.at(2) = 8;
        // 2 1 8 5
        for (size_t i = 0; i < deq.size(); ++i) {
            cout << deq[i] << " ";
        }
        cout << endl;
        // 索引取值
        deque<int> deq1(10);
        for (size_t i = 0; i < deq1.size(); ++i) {
            deq1[i] = i + 1;
        }
        for (size_t i = 0; i < deq1.size(); ++i) {
            cout << deq1[i] << " ";
        }
    }

输出:

que is empty
deq is empty
2 1 3 5 
top:2 last:5
2 1 8 5 
1 2 3 4 5 6 7 8 9 10 

 

queue的操作就相对少了很多:

 

posted on 2022-03-26 15:45  蜀山菜鸟  阅读(298)  评论(0)    收藏  举报