-
C++ find_first_of 函数完全攻略
所属栏目:[语言] 日期:2022-07-17 热度:76
在某些情境中,我们可能需要在 A 序列中查找和 B 序列中任意元素相匹配的第一个元素,这时就可以使用 find_first_of() 函数。 仅仅用一句话概述 find_first_of() 函数的功能,读者可能并不理解。别急,下面我们将从语法格式的角度继续阐述该函数的功能。 fin[详细]
-
C++ adjacent_find 函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:160
adjacent_find() 函数用于在指定范围内查找 2 个连续相等的元素。该函数的语法格式为: //查找 2 个连续相等的元素 ForwardIterator adjacent_find (ForwardIterator first, ForwardIterator last); //查找 2 个连续满足 pred 规则的元素 ForwardIterator ad[详细]
-
C++ search 函数用法完全攻略
所属栏目:[语言] 日期:2022-07-17 热度:124
通过《C++ find_end()函数》一节的讲解我们知道,find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置。那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数。 search() 函数定义在algorithm头文件中,其[详细]
-
C++ search_n 函数用法 超级详细
所属栏目:[语言] 日期:2022-07-17 热度:63
《C++ search()函数》一节中,已经详细介绍了 search() 函数的功能和用法。在此基础上,本节再介绍一个功能类似的函数,即 search_n() 函数。 和 search() 一样,search_n() 函数也定义在algorithm头文件中,用于在指定区域内查找第一个符合要求的子序列。不[详细]
-
C++ partition 和stable_partition 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:126
partition 可直译为分组,partition() 函数可根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合筛选条件的数据,另一组为不符合筛选条件的数据。 举个例子,假设有一个数组 a[9],其存储数据如下: 1 2 3 4 5 6 7 8 9[详细]
-
C++ partition_copy 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:157
《C++ partition()和stable_partition()函数》一节中,已经详细介绍了 partition() 和 stable_partition() 函数的功能和用法。不知道读者是否发现,这 2 个函数在实现功能时,都直接修改了原序列中元素的存储位置。 而在某些场景中,我们需要类似 partition([详细]
-
C++ find函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:179
find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。 如下为 find() 函数的语法格式: InputIterator find (InputIterator first, InputIterator last, const T val); 其中,first 和 last 为输入迭代器,[first, last)[详细]
-
C++ STL vector删除元素的几种方式 超级具体
所属栏目:[语言] 日期:2022-07-16 热度:176
前面提到,无论是向现有 vector 容器中访问元素、添加元素还是插入元素,都只能借助 vector 模板类提供的成员函数,但删除 vector 容器的元素例外,完成此操作除了可以借助本身提供的成员函数,还可以借助一些全局函数。 基于不同场景的需要,删除 vecotr 容[详细]
-
C++ STL deque容器迭代器用法解说
所属栏目:[语言] 日期:2022-07-16 热度:151
deque 容器迭代器的类型为随机访问迭代器,deque 模板类提供了表 1 所示这些成员函数,通过调用这些函数,可以获得表示不同含义的随机访问迭代器。 有关迭代器及其类型的介绍,可以阅读《C++ STL迭代器(iterator)》一节,本节不再做具体介绍。 成员函数 功[详细]
-
C++ STL deque容器访问元素 4种办法
所属栏目:[语言] 日期:2022-07-16 热度:149
通过《STL deque容器》一节,详细介绍了如何创建一个 deque 容器,本节继续讲解如何访问(甚至修改)deque 容器存储的元素。 和 array、vector 容器一样,可以采用普通数组访问存储元素的方式,访问 deque 容器中的元素,比如: #include iostream #include[详细]
-
C++ STL deque容器增加和删除元素方法完全攻略
所属栏目:[语言] 日期:2022-07-16 热度:89
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数。 表 1 和添加或删除deque容器中元素相关的成员函数 成员函数 功能 push_back() 在容器现有[详细]
-
C++ list STL list 容器完全攻略 非常详细
所属栏目:[语言] 日期:2022-07-16 热度:159
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。 可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备[详细]
-
C++ STL list迭代器及用法 细说版
所属栏目:[语言] 日期:2022-07-16 热度:114
只有运用迭代器,才能访问 list 容器中存储的各个元素。list 模板类提供了如表 1 所示的这些迭代器函数。 表 1 list 容器迭代器函数 迭代器函数 功能 begin() 返回指向容器中第一个元素的双向迭代器(正向迭代器)。 end() 返回指向容器中最后一个元素所在位[详细]
-
C++ list STL list 访问元素的几种办法
所属栏目:[语言] 日期:2022-07-16 热度:86
不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。 list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数。 通过 front() 和[详细]
-
C++ STL list增加 插入 元素方法详解
所属栏目:[语言] 日期:2022-07-16 热度:90
前面章节介绍了如何创建 list 容器,在此基础上,本节继续讲解如何向现有 list 容器中添加或插入新的元素。 list 模板类中,与添加或插入新元素相关的成员方法有如下几个: push_front():向 list 容器首个元素前添加新元素; push_back():向 list 容器最后[详细]
-
C++ STL list删掉元素详解
所属栏目:[语言] 日期:2022-07-16 热度:51
对 list 容器存储的元素执行删除操作,需要借助该容器模板类提供的成员函数。幸运的是,相比其它 STL 容器模板类,list 模板类提供了更多用来实现此操作的成员函数(如表 1 所示)。 表 1 实现 list 容器删除元素的成员函数 成员函数 功能 pop_front() 删除[详细]
-
C++ STL forward_list容器完全策略
所属栏目:[语言] 日期:2022-07-16 热度:106
forward_list 是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表(如图 1 所示)。 使用链表存储数据最大的特点在于,其并不会将数据进行集中存储(向数组那样)[详细]
-
C++ 11是什么 C++ 11标准的原由
所属栏目:[语言] 日期:2022-07-15 热度:158
C++ 这门编程语言的历史可以追溯至 1979 年,当时的 Bjarne Stroustrup(C++ 之父,后续简称 Stroustrup)还在使用 Simula 语言进行开发工作。 Simula 语言被认为是第一个面向对象的编程语言。Stroustrup 也非常赞赏 Simula 语言的这种特性,但由于实例开发[详细]
-
C++ auto类型推导完全策略
所属栏目:[语言] 日期:2022-07-15 热度:150
在 C++11 之前的版本(C++98 和 C++ 03)中,定义变量或者声明变量之前都必须指明它的类型,比如 int、char 等;但是在一些比较灵活的语言中,比如 C#、JavaScript、PHP、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自[详细]
-
C++ decltype类型推导完全战略
所属栏目:[语言] 日期:2022-07-15 热度:131
decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。不了解 auto 用法的读者请转到《C++ auto》。 decltype 是declare type的缩写,译为声明类型。 既然已经有了 auto 关键字,为什么还需要 decltype 关键字呢?[详细]
-
C++返回值类型后置 跟踪返回值类别
所属栏目:[语言] 日期:2022-07-15 热度:64
在泛型编程中,可能需要通过参数的运算来得到返回值的类型。考虑下面这个场景: template typename R, typename T, typename U R add(T t, U u) { return t+u; } int a = 1; float b = 2.0; auto c = adddecltype(a + b)(a, b); 我们并不关心 a+b 的类型是什[详细]
-
C++11运用using定义别名 替代typedef
所属栏目:[语言] 日期:2022-07-15 热度:54
大家都知道,在 C++ 中可以通过 typedef 重定义一个类型: typedef unsigned int uint_t; 被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载: void func(unsigned int); void func(uint_t); // e[详细]
-
链接库是啥 动态链接库和静态链接库
所属栏目:[语言] 日期:2022-07-15 热度:90
静态链接库和动态链接库是最常用的两种共享代码的方法,从本节开始,您将系统地了解它们,并彻底搞清楚以下问题: 什么是库,什么是链接库,以及静态链接库和动态链接库的区别; 如何手动创建一个静态或者动态链接库; 如何在自己的项目中使用第三方提供的静[详细]
-
首个多线程程序
所属栏目:[语言] 日期:2022-07-15 热度:114
通过阅读《什么是线程》一节,我们了解了什么是线程以及什么是多线程。本节,我们教大家编写第一个多线程程序。 大多数操作系统都支持同时执行多个程序,包括常见的 Windows、Linux、Mac OS X 操作系统等。为了避免多个程序访问系统资源(包括文件资源、I/O[详细]
-
Makefile控制函数error与warning
所属栏目:[语言] 日期:2022-07-15 热度:109
Makefile 中提供了两个控制 make 运行方式的函数。其作用是当 make 执行过程中检测到某些错误时为用户提供消息,并且可以控制 make 执行过程是否继续。这两个函数是 error 和 warning,我们来详细的介绍一下这两个函数。 $(error TEXT...) 函数说明如下: 函[详细]
