目录
一、list
1.1list的定义和结构
以下是一个示例,展示如何使用list容器:
1.2list的常用函数
1.3list代码示例
二、stack
2.1stack的定义和结构
stack的常用定义
2.2常用函数
2.3stack代码示例
template >class list;
list容器模板接受两个参数:
list容器的特点包括:
list容器提供了一系列成员函数和迭代器来操作和访问链表中的元素,包括插入、删除、访问、反转等操作。可以使用迭代器来遍历链表中的元素。
#include
#include
using namespace std;
int main()
{
list myList;
//在链表尾部插入元素
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
//在链表头不插入元素
myList.push_front(0);
//遍历链表并输出元素
for (int num : myList) {
cout << num << " ";
}
cout << endl;
return 0;
}
随机访问:begin()+idex,得到迭代器
list容器提供了多个常用的成员函数来操作和访问链表中的元素以下是一些常用的list函数的解释:
在代码中,我们向myList的尾部添加了5个元素,从1到5。
int main()
{
//创建一个List对案myList
list myList;
//向myList尾部添加元素
for (int i = 1; i <= 5; ++i)
{
myList.push_back(i);
}
然后,我们使用范围for循环遍历myList并输出其中的元素。输出结果为:1 2 3 4 5 。
// 从头到尾输出myList中的元素
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
使用reverse函数将myList中的元素反转,并输出反转后的结果。输出为:5 4 3 2 1 。
//将myList中的元素反转
reverse(myList.begin(), myList.end());
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
再使用myList.begin()获取链表的第一个迭代器,然后使用++操作符将其移动到第二个元素的位置。接着,我们使用insert函数在这个位置插入元素0。输出结果为:5 0 4 3 2 1 。
//在第一个元素的后一个位置加上元素0
myList.insert(++myList.begin(), 0);
删除链表中的一部分元素。++++myList.begin()将迭代器移动到链表的第三个元素,而--myList.end()将迭代器移动到链表的倒数第二个元素之前的位置。因此,这行代码将删除从第三个元素到倒数第二个元素之间的所有元素。
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
myList.erase(++++myList.begin(), -- myList.end());
//输出myList的大小
cout << "链表大小为: " << myList.size() << '\n';
//从头到尾输出myList中的元素
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
int main()
{
//创建一个List对案myList
list myList;
//向myList尾部添加元素
for (int i = 1; i <= 5; ++i)
{
myList.push_back(i);
}
// 从头到尾输出myList中的元素
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
//将myList中的元素反转
reverse(myList.begin(), myList.end());
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
//在第一个元素的后一个位置加上元素0
myList.insert(++myList.begin(), 0);
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
myList.erase(++++myList.begin(), -- myList.end());
//输出myList的大小
cout << "链表大小为: " << myList.size() << '\n';
//从头到尾输出myList中的元素
for (const auto& i : myList)cout << i << ' ';
cout << '\n';
}
在C++中,stack是一个标准库容器,它提供了后进先出(LIFO, Last In First Out)的数据结构。stack容器只允许在序列的同一端(称为栈顶)进行插入和删除操作。stack没有迭代器,因此你不能像遍历其他容器(如vector或list)那样遍历stack。相反,你只能查看栈顶元素、向栈中添加元素或从栈中移除元素。
stack提供了一组函数来操作和访问元素,但它的功能相对较简单。stack的定义和结构如下 (仅作了解即可):
template >
class stack;
T:表示存储在stack中的元素的类型
Container: 表示底层容器的类型,默认为deque。也可以使用其他容器类型,如vector或list、stack的内部实现使用了底层容器来存储元素,并且只能通过特定的函数来访问和操作元素。
//stack的定义
stacks1; //定义一个储存数据类型为int的stack容器s1
stacks2; //定义一个储存数据类型为double的stack容器s2
stacks3; //定义一个储存数据类型为string的stack容器s3
stack<结构体类型>s4; //定义一个储存数据类型为结构体类型的stack容器s4
stack s5[N]; //定义一个储存数据类型为int的stack容器数组,N为大小
stack s6[N]; //定义一个储存数据类型为int的stack容器数组,N为大小
stack不能遍历
函数 | 描述 | 时间复杂度 |
push(x) | 在栈顶插入元素 x | 0(1) |
pop | 弹出栈顶元素 |
0(1) |
top | 返回栈顶元素 |
0(1) |
empty | 检查栈是否为空 |
0(1) |
size | 返回栈中元素的个数 | 0(1) |
小tips: 如果将一个数组的元素依次放入栈,再依次取出,则可以将数组翻转。
#include
#include
using namespace std;
int main()
{
stackmyStack;
//向栈中插入元素
myStack.push(10);
myStack.push(20);
myStack.push(30);
myStack.push(40);
//获取栈顶元素
cout << "栈顶元素" << myStack.top() << endl;
//弹出栈顶元素
myStack.pop();
//再次获取栈顶元素
cout << "弹出一个元素后的栈顶元素" << myStack.top() << endl;
//检查栈是否为空
if (myStack.empty()) {
cout << "栈为空" << endl;
}
else {
cout << "栈不为空" << endl;
}
//获取栈的大小
cout << "栈的大小" << myStack.size() << endl;
return 0;
}
今天就先到这了!!!
看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。