zl程序教程

C++ STL 详解

  • C++STL vector详解(杂谈)编程语言

    C++STL vector详解(杂谈)编程语言

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。   Vector总览 vector是C++标准模板库中的部分内容,它是一个多功能的,能

    日期 2023-06-12 10:48:40     
  • C++ vector,STL vector(可变长的动态数组)详解

    C++ vector,STL vector(可变长的动态数组)详解

    vector 是顺序容器的一种。vector 是可变长的动态数组,支持随机访问迭代器,所有 STL 算法都能对 vector 进行操作。要使用 vector,需要包含头文件 vector。 在 vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下也是常数,总体来说速度很快。 在中间插入或删除元素时,因为要移动多个元素,因此速度较慢,平均花费的时间和容

    日期 2023-06-12 10:48:40     
  • C++迭代器(STL迭代器)iterator详解

    C++迭代器(STL迭代器)iterator详解

    要访问顺序容器和关联容器中的元素,需要通过 迭代器(iterator) 进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。 迭代器按照定义方式分成以下四种。 1) 正向迭代器,定义方法如下: 容器类名::iterator  迭代器名; 2) 常量正向迭代器,定义方法如下:

    日期 2023-06-12 10:48:40     
  • C++ multimap,STL multimap详解

    C++ multimap,STL multimap详解

    multimap 是关联容器的一种,multimap 的每个元素都分为关键字和值两部分,容器中的元素是按关键字排序的,并且允许有多个元素的关键字相同。 注意,不能直接修改 multimap 容器中的关键字。因为 multimap 中的元素是按照关键字排序的,当关键字被修改后,容器并不会自动重新调整顺序,于是容器的有序性就会被破坏,再在其上进行查找等操作就会得到错误的结果。

    日期 2023-06-12 10:48:40     
  • C++ stack(STL stack)用法详解

    C++ stack(STL stack)用法详解

    容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。 stack T 容器适配器中的数据是以 LIFO 的方式组织的,这和自助餐馆中堆叠的盘子、箱子中的一堆书类似。图 1 展示了一个理论上的 stack 容器及其一些基本操作。只能访问 stack 顶部的元素;只有在移除 stack 顶部的元

    日期 2023-06-12 10:48:40     
  • C++ set添加、删除和访问(STL set添加、删除和访问)元素详解

    C++ set添加、删除和访问(STL set添加、删除和访问)元素详解

    set 中没有实现成员函数 at(),也没有实现 operator[]() 。除了这些操作外,set 容器提供 map 容器所提供的大部分操作。可以使用 insert()、emplace()、emplace_hint() 成员函数来向 set 中添加元素。 下面是一个使用 insert() 的示例: std::set string, std::greater string words {

    日期 2023-06-12 10:48:40     
  • C++ merge和inplace_merge(STL merge和inplace_merge)算法详解

    C++ merge和inplace_merge(STL merge和inplace_merge)算法详解

    合并操作会合并两个有相同顺序的序列中的元素,可以是两个升序序列,也可以是两个降序序列。结果会产生一个包含来自这两个输入序列的元素副本的序列,并且排序方式和原始序列相同。图 1 说明了其工作方式。 图 1 合并两个 vector 容器中的元素 merge() 算法会合并两个序列并将结果保存到第三个序列中,它使用 运算符来比较元素。图 1 表明合并操作被运用到 these 和 those 容器

    日期 2023-06-12 10:48:40     
  • C++ find(STL find)查找算法详解

    C++ find(STL find)查找算法详解

    find() 为在输入迭代器所定义的范围内查找单个对象的算法,它可以在前两个参数指定的范围内查找和第三个参数相等的第一个对象。 find 算法会返回一个指向被找到对象的迭代器,如果没有找到对象,会返回这个序列的结束迭代器。下面展示了如何使用 find(): std::vector int numbers {5, 46, -5, -6, 23, 17, 5, 9, 6, 5}; int v

    日期 2023-06-12 10:48:40     
  • C++ search(STL search)算法详解

    C++ search(STL search)算法详解

    在查找序列的子序列方面,search() 算法和 find_end() 算法相似,但它所查找的是第一个匹配项而不是最后一个。 和 find_end() 算法一样,它也有两个版本,第二个版本接受用来比较元素的谓词作为第 5 个参数。可以用 search() 来验证前面使用 find_end() 搜索的结果。 如何改变每次遍历搜索的具体范围是它们的主要不同之处。下面是一个示例: string

    日期 2023-06-12 10:48:40     
  • C++ binary_search(STL binary_search)二分查找算法详解

    C++ binary_search(STL binary_search)二分查找算法详解

    目前为止,你在本章中见到的搜索算法都是对序列进行顺序搜索,而且没有事先对元素进行排序的要求。二分查找一般比顺序搜索要快,但要求序列中的元素是有序的。这主要是因为二分查找的搜索机制,图 1 说明了这种机制。 图 1 二分查找 图 1 展示了在一个升序序列中二分查找 22 的过程。因为元素是升序排列的,所以查找机制使用小于运算符来查找元素。搜索降序序列需要使用小于运算符来比较元素。二分查找总是

    日期 2023-06-12 10:48:40     
  • C++ lower_bound(STL lower_bound)二分查找算法详解

    C++ lower_bound(STL lower_bound)二分查找算法详解

    二分查找一般比顺序搜索要快,但要求序列中的元素是有序的。这主要是因为二分查找的搜索机制,图 1 说明了这种机制。 图 1 二分查找 图 1 展示了在一个升序序列中二分查找 22 的过程。因为元素是升序排列的,所以查找机制使用小于运算符来查找元素。搜索降序序列需要使用小于运算符来比较元素。二分查找总是选择从序列中部的元素开始,并将它和搜索的值作比较。如果元素和被查找的元素相等,就认为是匹配的

    日期 2023-06-12 10:48:40     
  • C++ upper_bound(STL upper_bound)二分查找算法详解

    C++ upper_bound(STL upper_bound)二分查找算法详解

    二分查找一般比顺序搜索要快,但要求序列中的元素是有序的。这主要是因为二分查找的搜索机制,图 1 说明了这种机制。 图 1 二分查找 图 1 展示了在一个升序序列中二分查找 22 的过程。因为元素是升序排列的,所以查找机制使用小于运算符来查找元素。搜索降序序列需要使用小于运算符来比较元素。二分查找总是选择从序列中部的元素开始,并将它和搜索的值作比较。如果元素和被查找的元素相等,就认为是匹配的

    日期 2023-06-12 10:48:40     
  • C++ STL move_iterator移动迭代器用法详解

    C++ STL move_iterator移动迭代器用法详解

    C++ 11 还为 STL 标准库增添了一种迭代器适配器,即本节要讲的 move_iterator 移动迭代器适配器。 move_iterator 迭代器适配器,又可简称为移动迭代器,其可以实现以移动而非复制的方式,将某个区域空间中的元素移动至另一个指定的空间。 举个例子,前面讲了 vector 容器,该类型容器支持如下初始化的方式(程序一): #include iostream #

    日期 2023-06-12 10:48:40     
  • C++ STL【常用算法】详解

    C++ STL【常用算法】详解

    大家好,欢迎来到STL【常用算法】详解模块,本文将对STL中常见但又高频的算法进行一个详细又简单的入门级教学🎓 文章目录 一、算法概述二、常用算法合集1、

    日期 2023-06-12 10:48:40     
  • 教外谈(5):C++ STL最全详解(上)

    教外谈(5):C++ STL最全详解(上)

    文章目录 前言 一、STL是什么? 二、STL组成 三、STL容器 四、STL迭代器 五、序列式容器 1.array 2.vector 3.deq

    日期 2023-06-12 10:48:40