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