今日任务

1.STL标准模板库

https://zzk.cnblogs.com/s/blogpost?w=STL%E6%A0%87%E5%87%86%E6%A8%A1%E6%9D%BF%E5%BA%93

https://so.csdn.net/so/search?spm=1000.2115.3001.4498&q=STL%E6%A0%87%E5%87%86%E6%A8%A1%E6%9D%BF%E5%BA%93&t=&u=

  • STL标准模板库

  • 该程序的功能是让用户自由地从键盘上输入整数,直到输入数字0为止。用户输入的数据存储在一个定义在 STL 标准模板库中的容器 vector<int> 中,并进行升序排列后输出

  • STL

  • STL(Standard Template Library)是C++标准库中的一个重要组成部分,用于提供通用的数据结构和算法。它包含了许多容器(如vector、list、map等)和算法(如排序、查找等),以及迭代器和函数对象等。STL的设计目标是提供高效、可重用的数据结构和算法,以帮助程序员提高开发效率和代码质量。

  • 如何使用STL

  • 使用STL的基本步骤如下:

    1. 引入头文件:在程序中引入相应的STL头文件,如#include <vector>#include <algorithm>等。

    2. 使用容器:选择合适的容器(如vector、list、map等)来存储数据。创建容器对象,可以使用默认构造函数或传入初始值的构造函数。例如,std::vector<int> nums;std::vector<int> nums = {1, 2, 3};

    3. 添加和访问元素:通过调用容器的成员函数来添加和访问元素。例如,使用push_back()函数向vector中添加元素,使用[]操作符或at()函数来访问元素。例如,nums.push_back(4);int x = nums[0];

    4. 使用算法:STL提供了丰富的算法,包括排序、查找、遍历等。通过调用算法函数来对容器进行操作。例如,使用std::sort()对vector进行排序,使用std::find()查找某个元素等。

    5. 使用迭代器:迭代器是STL中用于遍历容器的一种机制。通过使用迭代器,可以在容器中进行元素的遍历和操作。例如,使用begin()end()函数获取容器的起始和结束迭代器,并使用循环遍历容器。

    6. 其他操作:STL还提供了其他一些功能,如函数对象、谓词、适配器等,可以进一步扩展STL的功能。

    需要注意的是,不同的STL组件有不同的用法和特性,具体的使用方法可以参考相关的文档和教程。此外,熟悉STL的命名空间和成员函数也是使用STL的关键

  • STL中有哪些模板

  • STL中包含了多个模板,涵盖了不同的功能和用途。以下是STL中常用的一些模板:

    1. 容器模板:

      • vector:动态数组
      • list:双向链表
      • deque:双端队列
      • set:有序集合(不允许重复元素)
      • multiset:有序集合(允许重复元素)
      • map:有序映射(键值对)
      • multimap:有序映射(允许重复键值对)
    2. 迭代器模板:

      • iterator:输入、输出、前向、双向和随机访问迭代器
      • reverse_iterator:逆向迭代器
    3. 算法模板:

      • algorithm:包含了各种算法,如排序、查找、拷贝、替换等
      • numeric:包含了数值算法,如求和、累加、内积等
    4. 函数对象模板:

      • functional:包含了一些函数对象,如加法、减法、比较器等
    5. 容器适配器模板:

      • stack:栈
      • queue:队列
      • priority_queue:优先队列

    除上述模板外,STL还包含了其他一些模板,如位操作模板、随机数模板等。这些模板提供了丰富的功能和灵活的使用方式,可以根据实际需求选择合适的模板来解决问

2.BFS宽度优先搜索

https://zzk.cnblogs.com/s/blogpost?w=BFS%E5%AE%BD%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2

http://ybt.ssoier.cn:8088/index.php

  • BFS

  • BFS(广度优先搜索)是一种图遍历算法,用于从给定的起始节点开始,按照广度优先的方式,逐层访问图中的节点。

    BFS的基本思想是从起始节点开始,先访问起始节点,然后依次访问起始节点的相邻节点,再依次访问相邻节点的相邻节点,以此类推,直到遍历完所有可达的节点。在访问过程中,使用一个队列来保存待访问的节点,并且按照先进先出的顺序进行访问。

    BFS算法步骤如下:

    1. 创建一个队列,并将起始节点放入队列中。

    2. 标记起始节点为已访问。

    3. 从队列中取出一个节点,访问该节点并将其未访问的相邻节点加入队列。

    4. 标记取出的节点的相邻节点为已访问。

    5. 重复步骤3和步骤4,直到队列为空。

    BFS算法可以用于解决一些问题,如无权图的最短路径问题、连通性问题等。它保证了在访问所有可达节点的同时,按照从起始节点到各个节点的距离逐层遍历,因此可以找到最短路径等问题的解答。

    需要注意的是,在实际应用中,可能需要使用辅助数据结构来记录节点的访问状态和路径信息,以便在需要时进行处理和使用。

3.结构体

https://zzk.cnblogs.com/s/blogpost?w=%E7%BB%93%E6%9E%84%E4%BD%93

  • 结构体

  • 结构体(Struct)是C语言和C++语言中的一种自定义数据类型,用于组合多个不同类型的数据成员。结构体可以包含不同类型的数据,如整型、浮点型、字符型等,也可以包含其他结构体或指针类型的成员。

    在C语言中,结构体的定义如下:

    struct MyStruct {
        int member1;
        float member2;
        char member3;
    };

    在C++语言中,结构体的定义与C语言类似,但可以包含成员函数:

    struct MyStruct {
        int member1;
        float member2;
        char member3;
    
        void display() {
            // 成员函数实现
        }
    };

    结构体可以通过.运算符来访问其成员。例如:

    MyStruct obj;
    obj.member1 = 10;
    obj.member2 = 3.14;
    obj.member3 = 'A';

    结构体可以作为函数参数传递,也可以作为函数的返回值。它提供了一种组织和操作多个相关数据的方式,常用于定义复杂的数据结构和对象。

posted @ 2023-07-22 16:14  郁佳彬  阅读(66)  评论(0)    收藏  举报