C++基本操作之栈stack、队列queue、向量vector
C++中的栈(stack)、队列(queue)和向量(vector)是常用的容器,用于存储和操作数据。它们都是标准库中的类模板,因此可以通过包含头文件<stack>、<queue>和<vector>来使用它们。下面分别介绍它们的基本操作。
栈(stack)
栈是一种后进先出(Last-In-First-Out,LIFO)的数据结构,可以在末尾添加和删除元素。在C++中,使用stack类模板来表示栈。栈的基本操作包括:
push(elem):将元素elem压入栈顶。
pop():弹出栈顶元素。
top():返回栈顶元素。
empty():判断栈是否为空。
size():返回栈中元素的个数。
下面是一个示例代码,展示了如何使用栈:
#include <stack>
#include <iostream>
using namespace std;
int main() {
stack<int> s;
// 压入元素
s.push(1);
s.push(2);
s.push(3);
// 输出栈顶元素
cout << "栈顶元素:" << s.top() << endl;
// 弹出栈顶元素
s.pop();
// 输出栈中元素的个数
cout << "栈中元素的个数:" << s.size() << endl;
// 判断栈是否为空
if (s.empty()) {
cout << "栈为空" << endl;
} else {
cout << "栈不为空" << endl;
}
return 0;
}队列(queue)
队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,可以在末尾添加元素,在开头删除元素。在C++中,使用queue类模板来表示队列。队列的基本操作包括:
push(elem):将元素elem插入到队尾。
pop():删除队头元素。
front():返回队头元素。
back():返回队尾元素。
empty():判断队列是否为空。
size():返回队列中元素的个数。
下面是一个示例代码,展示了如何使用队列:
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue<int> q;
// 插入元素
q.push(1);
q.push(2);
q.push(3);
// 输出队头元素
cout << "队头元素:" << q.front() << endl;
// 删除队头元素
q.pop();
// 输出队尾元素
cout << "队尾元素:" << q.back() << endl;
// 输出队列中元素的个数
cout << "队列中元素的个数:" << q.size() << endl;
// 判断队列是否为空
if (q.empty()) {
cout << "队列为空" << endl;
} else {
cout << "队列不为空" << endl;
}
return 0;
}向量(vector)
向量是一种动态数组,可以在末尾添加和删除元素。在C++中,使用`vector`类模板来表示向量。向量的基本操作包括:
- push_back(elem):将元素elem插入到向量末尾。
- pop_back():删除向量末尾元素。
- at(index):返回向量中索引为index的元素。
- empty():判断向量是否为空。
- size():返回向量中元素的个数。
下面是一个示例代码,展示了如何使用向量:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> v;
// 插入元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// 输出向量中的元素
cout << "向量中的元素:";
for (int i = 0; i < v.size(); i++) {
cout << v.at(i) << " ";
}
cout << endl;
// 删除向量末尾元素
v.pop_back();
// 输出向量中的元素
cout << "向量中的元素:";
for (int i = 0; i < v.size(); i++) {
cout << v.at(i) << " ";
}
cout << endl;
// 输出向量中索引为1的元素
cout << "向量中索引为1的元素:" << v.at(1) << endl;
// 输出向量中元素的个数
cout << "向量中元素的个数:" << v.size() << endl;
// 判断向量是否为空
if (v.empty()) {
cout << "向量为空" << endl;
} else {
cout << "向量不为空" << endl;
}
return 0;
}以上是栈、队列和向量的基本操作。需要注意的是,向量和队列支持随机访问,而栈不支持随机访问。此外,如果需要更高效的操作,可以使用STL提供的其他容器,如双向链表list、无序关联数组unordered_map等。

- 上一篇:什么是树的孩子表示法?
- 下一篇:c++中什么是数组
