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

详细介绍C++STL中的栈(stack)、队列(queue)、链表(list)、向量(vector)等容器 C++ STL 中提供了许多容器,包括栈(stack)、队列(queue)、链表(list)、向量

作者:野牛程序员:2023-02-24 19:19:19C++程序设计阅读 2876

C++ STL 中提供了许多容器,包括栈(stack)、队列(queue)、链表(list)、向量(vector)等。下面将分别介绍这些容器的基本用法和特点。

栈(stack)

栈是一种后进先出(LIFO)的数据结构,只允许在栈顶插入和删除元素。在 C++ STL 中,栈容器通过 stack 类实现。栈的基本操作包括入栈、出栈、取栈顶元素等。

以下是一个简单的示例,演示了如何使用栈容器:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;
    s.push(1);
    s.push(2);
    s.push(3);

    while (!s.empty()) {
        std::cout << s.top() << " ";
        s.pop();
    }
    std::cout << std::endl;

    return 0;
}

在以上代码中,首先创建了一个栈容器 s,并依次向栈中插入了三个整数。然后,使用 top 函数访问栈顶元素,使用 pop 函数删除栈顶元素,并不断循环,直到栈为空为止。

输出结果为:

3 2 1

队列(queue)

队列是一种先进先出(FIFO)的数据结构,只允许在队尾插入元素,在队头删除元素。在 C++ STL 中,队列容器通过 queue 类实现。队列的基本操作包括入队、出队、取队头元素等。

以下是一个简单的示例,演示了如何使用队列容器:

#include <iostream>
#include <queue>

int main() {
    std::queue<int> q;
    q.push(1);
    q.push(2);
    q.push(3);

    while (!q.empty()) {
        std::cout << q.front() << " ";
        q.pop();
    }
    std::cout << std::endl;

    return 0;
}

在以上代码中,首先创建了一个队列容器 q,并依次向队列中插入了三个整数。然后,使用 front 函数访问队头元素,使用 pop 函数删除队头元素,并不断循环,直到队列为空为止。

输出结果为:

1 2 3

链表(list)

链表是一种基本的数据结构,可以动态地存储数据,并支持快速插入和删除操作。在 C++ STL 中,链表容器通过 list 类实现。链表的基本操作包括插入、删除、访问等。

以下是一个简单的示例,演示了如何使用链表容器:

#include <iostream>
#include <list>

int main() {
    std::list<int> l { 1, 2, 3 };
    l.push_back(4);
    for (auto it = l.begin(); it != l.end(); it++) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    l.pop_back();
    l.push_front(0);

    for (auto it = l.begin(); it != l.end(); it++) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

在以上代码中,首先创建了一个链表容器 l,并向其中插入了三个整数。然后,使用 push_back 函数在链表末尾插入一个元素 4,并使用迭代器 it 遍历链表中的所有元素。接下来,使用 pop_back 函数删除链表末尾的元素,使用 push_front 函数在链表头部插入元素 0,并再次遍历链表中的所有元素。

输出结果为:

1 2 3 4 
0 1 2 3

向量(vector)

向量是一种动态数组,可以快速地随机访问任意位置的元素。在 C++ STL 中,向量容器通过 vector 类实现。向量的基本操作包括插入、删除、访问等。

以下是一个简单的示例,演示了如何使用向量容器:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v { 1, 2, 3 };
    v.push_back(4);

    for (int i = 0; i < v.size(); i++) {
        std::cout << v[i] << " ";
    }
    std::cout << std::endl;

    v.pop_back();
    v.insert(v.begin(), 0);

    for (auto it = v.begin(); it != v.end(); it++) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

在以上代码中,首先创建了一个向量容器 v,并向其中插入了三个整数。然后,使用 push_back 函数在向量末尾插入一个元素 4,使用下标操作符 []size 函数访问向量中的元素。接下来,使用 pop_back 函数删除向量末尾的元素,使用 insert 函数在向量头部插入元素 0,并使用迭代器 it 遍历向量中的所有元素。

输出结果为:

1 2 3 4 
0 1 2 3

以上介绍了 C++ STL 中栈、队列、链表、向量等常见容器的基本用法和特点。这些容器在不同的场合下都有不同的用途,开发者可以根据实际需要选择合适的容器来实现所需的功能。

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

最新推荐

热门点击