当前位置: 首页 > news >正文

C++基础(7.Stack_Quene_List)

List介绍及其用法:

std::list 是 C++ 标准库中的一个双向链表容器,适合于频繁插入和删除操作。以下是 std::list 的常用接口和重载的详细介绍。

1. 基本构造函数

  • 默认构造函数

    std::list<int> lst;
    

    创建一个空的 list

  • 指定大小的构造函数

    std::list<int> lst(size_t n);
    

    创建一个包含 n 个元素的 list,元素值初始化为默认值(对于基本类型为 0)。

  • 指定大小和初始值的构造函数

    std::list<int> lst(size_t n, const int& value);
    

    创建一个包含 n 个元素的 list,所有元素初始化为 value

  • 拷贝构造函数

    std::list<int> lst(const std::list<int>& other);
    

    通过拷贝另一个 list 的内容来初始化。

  • 移动构造函数

    std::list<int> lst(std::list<int>&& other) noexcept;
    

    通过移动另一个 list 的内容来初始化,避免不必要的拷贝。

2. 赋值运算符

  • 拷贝赋值运算符

    std::list<int>& operator=(const std::list<int>& other);
    

    将一个 list 的内容复制到另一个 list

  • 移动赋值运算符

    std::list<int>& operator=(std::list<int>&& other) noexcept;
    

    将一个 list 的内容移动到另一个 list

3. 大小和容量

  • size()

    size_t size() const;
    

    返回当前 list 中元素的数量。

  • empty()

    bool empty() const;
    

    检查 list 是否为空。

4. 访问元素

  • front()

    T& front();
    const T& front() const;
    

    返回第一个元素的引用。

  • back()

    T& back();
    const T& back() const;
    

    返回最后一个元素的引用。

5. 修改元素

  • push_back()

    void push_back(const T& value);
    void push_back(T&& value);
    

    list 的末尾添加一个元素。

  • push_front()

    void push_front(const T& value);
    void push_front(T&& value);
    

    list 的前面添加一个元素。

  • pop_back()

    void pop_back();
    

    删除 list 的最后一个元素。

  • pop_front()

    void pop_front();
    

    删除 list 的第一个元素。

  • insert()

    iterator insert(iterator pos, const T& value);
    iterator insert(iterator pos, T&& value);
    iterator insert(iterator pos, size_t n, const T& value);
    template <class InputIt>
    iterator insert(iterator pos, InputIt first, InputIt last);
    

    在指定位置插入一个或多个元素。

  • erase()

    iterator erase(iterator pos);
    iterator erase(iterator first, iterator last);
    

    删除指定位置或范围的元素。

  • clear()

    void clear();
    

    删除所有元素。

6. 其他功能

  • swap()

    void swap(std::list<T>& other) noexcept;
    

    交换两个 list 的内容。

  • assign()

    void assign(size_t n, const T& value);
    template <class InputIt>
    void assign(InputIt first, InputIt last);
    

    重新赋值 list 的内容。

7. 迭代器

list 提供了多种迭代器支持,包括:

  • begin()end()

    iterator begin();
    iterator end();
    const_iterator begin() const;
    const_iterator end() const;
    

    返回指向第一个元素和最后一个元素之后位置的迭代器。

  • rbegin()rend()

    reverse_iterator rbegin();
    reverse_iterator rend();
    const_reverse_iterator rbegin() const;
    const_reverse_iterator rend() const;
    

    返回指向最后一个元素和第一个元素之前位置的反向迭代器。

注意:

list 支持许多标准算法,比如 sortremove_if 等,但需要注意的是,某些算法可能需要额外的考虑,因为 list 的随机访问性能较差。适合于频繁的插入和删除操作。


 

Stack介绍及其用法: 

stack 是 C++ 标准库中的一个容器适配器,提供了后进先出的数据结构。它是基于其他容器(如 dequevector)实现的。

1. 基本构造函数

  • 默认构造函数

    std::stack<T> s;
    

    创建一个空的 stack,底层使用默认的容器(通常是 std::deque)。

  • 指定底层容器的构造函数

    std::stack<T, Container> s;
    

    创建一个空的 stack,使用指定的容器类型 Container

2. 赋值运算符

  • 拷贝赋值运算符
    std::stack<T>& operator=(const std::stack<T>& other);
    
    将一个 stack 的内容复制到另一个 stack

3. 大小和容量

  • size()

    size_t size() const;
    

    返回 stack 中元素的数量。

  • empty()

    bool empty() const;
    

    检查 stack 是否为空。

4. 修改元素

  • push()

    void push(const T& value);
    void push(T&& value);
    

    stack 的顶部添加一个元素。

  • pop()

    void pop();
    

    移除 stack 顶部的元素。

5. 访问元素

  • top()
    T& top();
    const T& top() const;
    
    返回 stack 顶部元素的引用,但不移除该元素。

6. 其他功能

  • swap()
    void swap(std::stack<T>& other) noexcept;
    
    交换两个 stack 的内容。

7. 迭代器

stack 本身不提供迭代器,因为它是一个适配器。不过,如果需要迭代,可以通过底层容器访问。

8. 示例代码

以下是一个简单的stack 使用示例:

#include <iostream>
#include <stack>int main() {std::stack<int> s;// 添加元素s.push(1);s.push(2);s.push(3);// 输出栈顶元素std::cout << "Top element: " << s.top() << std::endl; // 输出 3// 移除栈顶元素s.pop();std::cout << "Top element after pop: " << s.top() << std::endl; // 输出 2// 输出栈的大小std::cout << "Stack size: " << s.size() << std::endl; // 输出 2// 检查栈是否为空std::cout << "Is stack empty? " << (s.empty() ? "Yes" : "No") << std::endl; // 输出 Noreturn 0;
}

 


 

Quene介绍及其用法: 

std::queue 是 C++ 标准库中的一个容器适配器,提供了先进先出(FIFO)的数据结构。它通常基于其他容器(如 std::dequestd::list)实现。以下是 std::queue 的常用接口和重载的详细介绍。

1. 基本构造函数

  • 默认构造函数

    std::queue<T> q;
    

    创建一个空的 queue,底层使用默认的容器(通常是 std::deque)。

  • 指定底层容器的构造函数

    std::queue<T, Container> q;
    

    创建一个空的 queue,使用指定的容器类型 Container

2. 赋值运算符

  • 拷贝赋值运算符
    std::queue<T>& operator=(const std::queue<T>& other);
    
    将一个 queue 的内容复制到另一个 queue

3. 大小和容量

  • size()

    size_t size() const;
    

    返回 queue 中元素的数量。

  • empty()

    bool empty() const;
    

    检查 queue 是否为空。

4. 修改元素

  • push()

    void push(const T& value);
    void push(T&& value);
    

    queue 的尾部添加一个元素。

  • pop()

    void pop();
    

    移除 queue 前面的元素。

5. 访问元素

  • front()

    T& front();
    const T& front() const;
    

    返回 queue 前面元素的引用,但不移除该元素。

  • back()

    T& back();
    const T& back() const;
    

    queue 尾部元素的引用,但不移除该元素。

6. 其他功能

  • swap()
    void swap(std::queue<T>& other) noexcept;
    
    交换两个 queue 的内容。

7. 迭代器

queue 不提供迭代器,因为它一样是一个适配器

8. 示例代码

以下是一个简单的queue 使用示例:

#include <iostream>
#include <queue>int main() {std::queue<int> q;// 添加元素q.push(1);q.push(2);q.push(3);// 输出队首元素std::cout << "Front element: " << q.front() << std::endl; // 输出 1// 移除队首元素q.pop();std::cout << "Front element after pop: " << q.front() << std::endl; // 输出 2// 输出队列的大小std::cout << "Queue size: " << q.size() << std::endl; // 输出 2// 检查队列是否为空std::cout << "Is queue empty? " << (q.empty() ? "Yes" : "No") << std::endl; // 输出 Noreturn 0;
}


http://www.mrgr.cn/news/21218.html

相关文章:

  • 混合模式属性background-blend-mode
  • Python 优雅编程:会报恩的代码(五)
  • Vue2 中对数组进行操作时需要注意什么
  • 通过15张图带你掌握网络抓包工具Wireshark必备使用技巧
  • ubuntu java
  • 数据库系统 第40节 数据库安全策略
  • 【C#】DrawCurve的用法
  • Nacos注册中心与OpenFeign远程调用
  • P1166 打保龄球
  • linux基础IO——重定向原理学习——重定向指令实现、虚拟文件系统
  • 如何确定 npm 依赖需要的 Node.js 版本?
  • 【60天备战软考高级系统架构设计师——第十天:软件设计与架构综合练习】
  • HNU-2023电路与电子学-实验1
  • HTTP协议(超文本传输协议)
  • 四、搭建网站服务器超详细步骤——解决宝塔界面无法登录问题
  • 机器学习:对数据进行降维(PCA和SVD)
  • 【Qt】仿照qq界面的设计
  • 火狐浏览器重置密码后收藏的标签密码等数据被清除
  • 【STM32】CAN总线基础入门
  • 用户认证中的有状态和无状态