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