stl中栈的adt代码
时间: 2024-04-01 09:29:39 浏览: 27
栈(Stack)是一种常见的数据结构,它遵循先进后出(LIFO)的原则。在C++的STL(Standard Template Library)中,栈的ADT(Abstract Data Type)被封装在stack模板类中。下面是一个简单的栈的ADT代码示例:
```cpp
#include <iostream>
#include <stack>
int main() {
std::stack<int> myStack; // 创建一个整型栈
// 入栈操作
myStack.push(1);
myStack.push(2);
myStack.push(3);
// 出栈操作
while (!myStack.empty()) {
int topElement = myStack.top(); // 获取栈顶元素
std::cout << topElement << " "; // 输出栈顶元素
myStack.pop(); // 弹出栈顶元素
}
return 0;
}
```
上述代码中,我们使用了`std::stack`模板类来创建一个整型栈`myStack`。通过`push`函数可以将元素入栈,通过`top`函数可以获取栈顶元素,通过`pop`函数可以弹出栈顶元素。`empty`函数用于判断栈是否为空。
相关问题
c++STL中sort源代码
C++ STL中的sort函数是用于对容器中的元素进行排序的函数。它使用了一种快速排序算法(Quicksort)的变体来实现排序。下面是sort函数的简化版本源代码:
```cpp
template <class RandomAccessIterator>
void sort(RandomAccessIterator first, RandomAccessIterator last) {
if (first == last) return;
RandomAccessIterator pivot = partition(first, last);
sort(first, pivot);
sort(pivot + 1, last);
}
template <class RandomAccessIterator>
RandomAccessIterator partition(RandomAccessIterator first, RandomAccessIterator last) {
RandomAccessIterator pivot = last - 1;
RandomAccessIterator i = first - 1;
for (RandomAccessIterator j = first; j < last - 1; ++j) {
if (*j <= *pivot) {
++i;
swap(*i, *j);
}
}
swap(*(i + 1), *pivot);
return i + 1;
}
```
这段代码使用了递归的方式实现了快速排序算法。首先,sort函数会将容器的第一个元素和最后一个元素作为参数传递给partition函数,将容器分为两部分,小于等于pivot的元素在左边,大于pivot的元素在右边。然后,sort函数再分别对左右两部分进行递归调用,直到排序完成。
c++stl中的queue的代码
以下是一个简单的 C++ STL 中队列(queue)的代码示例:
```c++
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q; // 定义一个空队列
q.push(1); // 向队列中插入元素
q.push(2);
q.push(3);
cout << "队列中的元素个数为:" << q.size() << endl; // 输出队列的大小
cout << "队首元素为:" << q.front() << endl; // 输出队首元素
cout << "队尾元素为:" << q.back() << endl; // 输出队尾元素
q.pop(); // 弹出队首元素
cout << "弹出队首元素后,队列中的元素个数为:" << q.size() << endl; // 输出队列的大小
return 0;
}
```
输出结果为:
```
队列中的元素个数为:3
队首元素为:1
队尾元素为:3
弹出队首元素后,队列中的元素个数为:2
```
在上面的示例中,我们首先定义了一个空队列 `q`,然后向队列中插入了三个元素(1、2、3)。使用 `q.size()` 函数获取队列的大小,使用 `q.front()` 和 `q.back()` 函数获取队首元素和队尾元素,使用 `q.pop()` 函数弹出队首元素。