略作修改)
一、stack(堆疊)
stack是乙個容器類的改編,它實現了乙個
先進後出
的資料結構,它儲存的容器物件來為它實現堆疊的所有功能。
注:迭代器不能在堆疊中使用,因為只有棧頂的元素才可以訪問。
typedef stack>>mystack
stack 模板類需要
兩個模板引數
,乙個是
元素型別
,乙個容器型別
,但只有
元素型別是必要的
,在不指定容器型別時,
預設的容器型別為deque。
它預設的引數中,容器是用deque實現的;被包含的容器要滿足value_type,size_type,empt,size,push_back,pop_back等功能。
包含這些功能的容器有:list,deque,vector。
函式列表:
運算子操作 比較和分配堆疊
top() 返回棧頂元素;
pop() 移除棧頂元素;
push() 在棧頂增加元素;
size() 返回棧中元素數目;
empty() 堆疊為空則返回真;
定義stack 物件的示例**如下:
stacks1;
stacks2;
stack 的基本操作有:
入棧,如例:s.push(x);
出棧,如例:s.pop();注意,出棧操作只是刪除棧頂元素,並不返回該元素。
訪問棧頂,如例:s.top()
判斷棧空,如例:s.empty(),當棧空時,返回true。
訪問棧中的元素個數,如例:s.size()。
二、queue
queue 模板類的定義在標頭檔案中。
與stack 模板類很相似,queue 模板類也需要
兩個模板引數,
乙個是元素型別
,乙個容器類
型,元素型別是必要的,容器型別是可選的,預設為deque 型別。
定義queue 物件的示例**如下:
queueq1;
queueq2;
queue 的基本操作有:
入隊,如例:q.push(x); 將x 接到佇列的末端。
出隊,如例:q.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入佇列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入佇列的元素。
判斷佇列空,如例:q.empty(),當佇列空時,返回true。
訪問佇列中的元素個數,如例:q.size()
#include #include #include using namespace std;
int main()
};bool operator < (const t &t1, const t &t2)
main()
return 1;
}
輸出結果為(注意是按照z 的順序從大到小出隊的):
3 3 6
2 2 5
1 5 4
4 4 3
再看乙個按照z 的順序從小到大出隊的例子:
#include #include using namespace std;
class t
};bool operator > (const t &t1, const t &t2)
main()
return 1;
}
輸出結果為:
4 4 3
1 5 4
2 2 5
3 3 6
如果我們把第乙個例子中的比較運算子過載為:
bool operator < (const t &t1, const t &t2)
則第乙個例子的程式會得到和第二個例子的程式相同的輸出結果。
C STL stack queue的使用方法
c stl stack queue 的使用方法 1 stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 sta...
container of 的的的原理
另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...
存在的就是合理的,發生的即是必然的。
筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...