C++ STL 中的栈列表
列表是允许非连续内存分配的序列容器。 与向量相比,列表的遍历速度较慢,但是一旦找到位置,插入和删除速度就会很快。
语法:
list<Type> name_of_list;
栈 是一种容器适配器,具有的 LIFO(后进先出)类型,其中在一端添加新元素,并且仅从该端(顶部)删除元素。
语法:
stack name_of_stack;
栈列表是具有一系列栈的容器的类型,这是一个二维容器,其中N
行的列表和M
列的栈 ,两个大小的大小都是不固定的。 可以使用迭代器 遍历和访问的。
语法:
list<stack> name_of_container(size);
大小可选。
示例:
list<stack> ls(10);
栈列表的大小为 10。
示例:
C++
// Loop to push element
// into a stack
for
i in[0, n]
{
s.push(i)
}
// Push Stack into the list
ls.push_back(s);
C++
// Loop to iterate over list
for (iterator it = ls.begin();
it != ls.end(); it++) {
// Stack of the List
stack<int>
st = *it;
while (!st.empty()) {
cout << st.top();
st.pop();
}
}
上面的代码使用开始迭代器ls.begin()
和结束迭代器ls.end()
在每个索引处遍历list<stack<int>> ls
。 为了访问元素,它使用*it
作为栈,而指针指向list<stack<int>> ls
列表中的元素。
下面是说明栈列表中的插入和遍历的程序:
C++
// C++ program for implementation
// of the lists of stack
#include <bits/stdc++.h>
using namespace std;
// Function for printing the
// elements in a list
void showlist(list<stack<int> > ls)
{
// Traverse the list and
// print row wise stack
for (list<stack<int> >::iterator it1
= ls.begin();
it1 != ls.end(); ++it1) {
// Copy rows in stack
stack<int> it2 = *it1;
// Print stack elements while
// it is not empty
while (!it2.empty()) {
cout << it2.top() << " ";
it2.pop();
}
cout << endl;
}
}
// Driver Code
int main()
{
// List of stacks
list<stack<int> > ls;
// Insert rows in list
for (int i = 0; i < 10; ++i) {
// Insert element in
// stack as column
stack<int> s;
for (int j = i; j < 10; j++) {
s.push(j);
}
ls.push_back(s);
}
cout << "List of stack is : \n";
showlist(ls);
return 0;
}
输出:
List of stack is :
9 8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2
9 8 7 6 5 4 3
9 8 7 6 5 4
9 8 7 6 5
9 8 7 6
9 8 7
9 8
9
如果您喜欢 GeeksforGeeks 并希望做出贡献,则还可以使用 tribution.geeksforgeeks.org 撰写文章,或将您的文章邮寄至 tribution@geeksforgeeks.org。 查看您的文章出现在 GeeksforGeeks 主页上,并帮助其他 Geeks。
如果您发现任何不正确的地方,请单击下面的“改进文章”按钮,以改进本文。
版权属于:月萌API www.moonapi.com,转载请注明出处