1.stack容器
stack ,棧(堆棧),是一種先進后出(First In Last Out,FILO)的數據結構,先插入的數據在棧底,后放入的數據在棧頂,所有的數據只能從棧頂取出。
在生活中先進后出的例子友很多,例如我們在桌子上摞書,先放的在最下面,后放的在最上面。在取書的時候也是先取最后放的,最才能取到第一個放的。
在棧容器中,只有棧頂數據才可以被外界訪問,因此stack不存在遍歷。
2.棧容器使用示例
- stack(棧)容器特性:
先進后出(后進先出) --類似與往袋子中裝東西,先放進去的在最下面,最后放進行的可以先拿出來;第一個放進去的 --->棧底
最后一個放進的 --->棧頂
stack只允許從棧頂取數據
stack容器無法對數據進行排序sort,但可以判斷容器是否為空empty,可以計算元素的個數size;
- 相關函數:
stack構造函數:
stack stk; //默認構造
stack(const stack &p);//拷貝構造
stack賦值
operator=() --運算符號重載
stack入棧與出棧:
push() -->入棧
emplace() -->入棧(在容器尾部插入元素)
pop() --->出棧
top() -->查看棧頂元素
empty() -->判斷容器是否為空
size() -->獲取元素個數
swap -->交換元素
使用示例:
#include
#include
using namespace std;
void test()
{
//創建一個stack容器
stack stk;
//入棧
stk.push(10);
stk.push(20);
stk.push(30);
stk.push(40);
stk.emplace(100);
stackstk3(stk);//拷貝構造
cout < "stk元素個數:" < stk.size() < endl;
//查看stk元素
while (!stk.empty())
{
cout < stk.top() < " ";//查看棧頂元素
stk.pop();//出棧
}
cout < endl;
stackstk2 = stk;//賦值
if (stk2.empty())
{
cout < "stk2為空" < endl;
}
//入棧
stk2.push(111);
stk2.push(222);
stk2.swap(stk3);
//查看stk2元素
cout < "skt2棧內容:" < endl;
while (!stk2.empty())
{
cout < stk2.top() < " ";//查看棧頂元素
stk2.pop();//出棧
}
cout < endl;
//查看stk3元素
cout < "skt3棧內容:" < endl;
while (!stk3.empty())
{
cout < stk3.top() < " ";//查看棧頂元素
stk3.pop();//出棧
}
cout < endl;
}
int main()
{
test();
system("pause");
}
3.queue容器
隊列(queue) 和堆棧相似,是一種可以存取的數據結構,不同的是隊列的存取是在兩個不同的方向進行的,因此其主要特征是先進先出(First-in-first-out,FIFO),類似于我們生活中的水管。
4.queue容器使用示例
隊列只需要從對尾插入數據(入隊,push_back),對頭取數據(出隊,pop_front);
隊列只能訪問對頭和隊尾數據,其他數據需要出隊才能訪問,所以不存在遍歷隊列;
返回隊列頭數據:front()
返回隊列尾數據:back()
- 相關函數:
隊列構造函數:
queue que; //隊列通過類模板實現,默認構造函數
queue(const queue &p);
operator=(queue &p) -->運算符重載
相關成功函數:
入隊:push()
出隊:pop()
獲取隊列頭數據:front();
獲取隊列尾數據:back();
判斷隊列是否為空:empty();
獲取隊列中元素個數:size();
互換元素:swap();
使用示例:
#include
#include
using namespace std;
void test()
{
queue q;
//入隊
q.push(10);
q.push(20);
q.push(30);
q.emplace(40);//從隊列尾插入數據
cout < "隊列中成員個數:" < q.size() < endl;
while (!q.empty())//判斷隊列是否為空
{
cout < "隊列頭:" < q.front() < "t隊列尾:" < q.back() < endl;
q.pop();//出隊
}
cout < "隊列中成員個數:" < q.size() < endl;
}
int main()
{
test();
system("pause");
}
-
C++
+關注
關注
22文章
2108瀏覽量
73641 -
數據結構
+關注
關注
3文章
573瀏覽量
40128 -
隊列
+關注
關注
1文章
46瀏覽量
10893
發布評論請先 登錄
相關推薦
評論