雙向佇列的使用
轉自:http://blog.csdn.net/vanquishedzxl/article/details/8531458
Deque是一種優化了的、對序列兩端元素進行新增和刪除操作的基本序列容器。它允許較為快速地隨機訪問,但它不像vector 把所有的物件儲存在一塊連續的記憶體
塊,而是採用多個連續的儲存塊,並且在一個對映結構中儲存對這些塊及其順序的跟蹤。向deque 兩端新增或刪除元素的開銷很小。它不需要重新分配空間,所以向末端增加元素比vector 更有效。
實際上,deque 是對vector 和list 優缺點的結合,它是處於兩者之間的一種容器。
deque 的特點: (1) 隨機訪問方便,即支援[ ] 操作符和vector.at() ,但效能沒有vector 好; (2) 可以在內部進行插入和刪除操作,但效能不及list ; (3) 可以在兩端進行push 、pop ; (4) 相對於verctor 佔用更多的記憶體。 雙向佇列和向量很相似,但是它允許在容器頭部快速插入和刪除(就像在尾部一樣)。 1.Constructors 建立一個新雙向佇列 語法: deque();//建立一個空雙向佇列 deque( size_type size );// 建立一個大小為size的雙向佇列 deque( size_type num, const TYPE &val ); //放置num個val的拷貝到佇列中 deque( const deque &from );// 從from建立一個內容一樣的雙向佇列 deque( input_iterator start, input_iterator end ); // start 和 end - 建立一個佇列,儲存從start到end的元素。 2.Operators 比較和賦值雙向佇列 //可以使用[]操作符訪問雙向佇列中單個的元素 3.assign() 設定雙向佇列的值 語法: void assign( input_iterator start, input_iterator end); //start和end指示的範圍為雙向佇列賦值 void assign( Size num, const TYPE &val );//設定成num個val。 4.at() 返回指定的元素 語法: reference at( size_type pos ); 返回一個引用,指向雙向佇列中位置pos上的元素 5.back() 返回最後一個元素 語法: reference back();//返回一個引用,指向雙向佇列中最後一個元素 6.begin() 返回指向第一個元素的迭代器 語法: iterator begin();//返回一個迭代器,指向雙向佇列的第一個元素 7.clear() 刪除所有元素 8.empty() 返回真如果雙向佇列為空 9.end() 返回指向尾部的迭代器 10.erase() 刪除一個元素 語法: iterator erase( iterator pos ); //刪除pos位置上的元素 iterator erase( iterator start, iterator end ); //刪除start和end之間的所有元素 //返回指向被刪除元素的後一個元素 11.front() 返回第一個元素的引用 12.get_allocator() 返回雙向佇列的配置器 13.insert() 插入一個元素到雙向佇列中 語法: iterator insert( iterator pos, size_type num, const TYPE &val ); //pos前插入num個val值 void insert( iterator pos, input_iterator start, input_iterator end ); //插入從start到end範圍內的元素到pos前面 14.max_size() 返回雙向佇列能容納的最大元素個數 15.pop_back() 刪除尾部的元素 16.pop_front() 刪除頭部的元素 17.push_back() 在尾部加入一個元素 18.push_front() 在頭部加入一個元素 19.rbegin() 返回指向尾部的逆向迭代器 20.rend() 返回指向頭部的逆向迭代器 21.resize() 改變雙向佇列的大小 22.size() 返回雙向佇列中元素的個數 23.swap() 和另一個雙向佇列交換元素 語法: void swap( deque &target );// 交換target和現雙向佇列中元素
相關推薦
SpringBoot整合ActiveMQ訊息佇列和雙向佇列、點對點與釋出訂閱
ActiveMQ 是Apache出品,最流行的,能力強勁的開源訊息匯流排。ActiveMQ 是一個完全支援JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。 &nbs
[LeetCode] Design Circular Deque 設計環形雙向佇列
Design your implementation of the circular double-ended queue (deque). Your implementation should support following operations: M
python deque(雙向佇列)
python3 deque(雙向佇列) 建立雙向佇列 import collections d = collections.deque() append(往右邊新增一個元素) import collections d = collections.deque() d.
php雙向佇列的實現
佇列是一種線性表,按照先進先出的原則進行 單向佇列:只能從頭進,從尾出 雙向佇列:頭尾都可以進出 class DuiLie { private $array = array();//宣告
雙向佇列的實現
c++中使用佇列的話有queue(單項佇列)、deque(雙向佇列),但在lua中並沒有提供給我們可直接使用的這類資料結構,不過lua中有一個近乎萬能的資料型別table,他可以實現其他語言中各種型別,今天在此先分享下雙向列表的lua實現,原理就是儲存一張表的首尾端索引,每次增刪的時候修改下,並
ACM/ICPC 2018亞洲區預選賽北京賽站網路賽 80 Days(雙向佇列+尺取法)
#1831 : 80 Days 時間限制:1000ms 單點時限:1000ms 記憶體限制:256MB 描述 80 Days is an interesting game based on Jules Verne's science fiction "Around
利用陣列實現雙向佇列(JAVA原始碼)
本文的主要內容就是利用陣列[]實現雙向佇列,當然,Java中有比較豐富的容器可以直接使用,實現類似的功能容器有助於我們更深入的學習好了解相關知識。 現在就開始一步一步講解如何實現。 1、雙向佇列的功能 首先,我們既然要實現該功能,就必然要把需求梳理清楚,我們要實
JAVA雙向佇列實現(連結串列)
佇列是很常見的一種資料儲存結構,今天,介紹下如何用連結串列實現雙向佇列。 首先定義節點介面如下: public interface Node<E> { //設定資料元素 public void setData(E o); //
阻塞佇列BlokingQueue與雙向佇列Deque
Queue: 基本上,一個佇列就是一個先入先出(FIFO)的資料結構 Queue介面與List、Set同一級別,都是繼承了Collection介面。LinkedList實現了Deque接 口。 Queue的實現 1、沒有實現的阻塞介面的LinkedList: 實現了
執行緒佇列排序(雙向佇列)
利用 .append 和 .pop 方法,我們可以把列表當作棧或者佇列來用(比如,把 .append 和 .pop(0) 合起來用,就能模擬棧的“先進先出”的特點)。但是刪除列表的第一個元素(抑或是在第一個元素之前新增一個元素)之類的操作是很耗時的,因為這些操作
[LeetCode] 641.Design Circular Deque 設計環形雙向佇列 [LeetCode] 622.Design Circular Queue 設計環形佇列 All LeetCode Questions List 題目彙總
Design your implementation of the circular double-ended queue (deque). Your implementation should support following operations: MyCircularDeque(k): Const
STL Deque(雙向佇列) C++
標頭檔案:#include<deque> (動態一維陣列)定義:deque<變數型別> 變數名; 例:deque<變數型別> dq;特點:支援隨機訪問(陣列訪問下表從0開始;at方法訪問,會丟擲異常),效能不如vector;
Java雙向佇列Deque棧與佇列
Java中實際上提供了java.util.Stack來實現棧結構,但官方目前已不推薦使用,而是使用java.util.Deque雙端佇列來實現佇列與棧的各種需求.如下圖所示java.util.Deque的實現子類有java.util.LinkedList和java.util.ArrayDeque
PHP簡單雙向佇列實現
這是一個簡單的PHP雙向佇列的實現: <?php class Deque{ public $queue = array(); /** * 尾部入對 * @param [type] $value [description] */ public
棧 佇列 和 雙向佇列
# 棧 # 特點: 先進後出 # class StackFullException(Exception): # pass # # class StackEmptyException(Exception): # pass # # class Stack: # # def __ini
STL-deque 雙向佇列[轉載]
原文地址 deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式: deque的實現比較複雜,內部會維護一個map(注意!不是STL中的map容器)即一小塊連續的空間,該空間中每個元素
STL之deque(雙向佇列)
雙向佇列的操作如下: deque<ll>q;//定義一個雙向佇列q,型別為long long q.push_front(a);//將a從隊首插入佇列 q.pus
STL系列之一 deque雙向佇列
deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式: deque的實現比較複雜,內部會維護一個map(注意!不是STL中的map容器)即一小塊連續的空間,該空間中每個元素都是指標,指向另一段
C++ Double Ended Queues(雙向佇列)
C++ Double Ended Queues(雙向佇列) 雙向佇列和向量很相似,但是它允許在容器頭部快速插入和刪除(就像在尾部一樣)。 Constructors 建立一個新雙向佇列 Operators 比較和賦值雙向
雙向佇列的使用
轉自:http://blog.csdn.net/vanquishedzxl/article/details/8531458 Deque是一種優化了的、對序列兩端元素進行新增和刪除操作的基本序列容器。它允許較為快速地隨機訪問,但它不像vector 把所有的物件儲