当前位置:首页C++程序设计 > 正文

C++基本操作之栈stack、队列queue、向量vector

作者:野牛程序员:2023-05-11 15:16:06C++程序设计阅读 2770

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等。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击