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++中什么是数组