-
C++ STL set emplace 和emplace_hint 办法详解
所属栏目:[语言] 日期:2022-07-15 热度:103
要知道,set 类模板提供的所有成员方法中,能实现向指定 set 容器中添加新元素的,只有 3 个成员方法,分别为 insert()、emplace() 和 emplace_hint()。其中 insert() 成员方法的用法已在前面章节做了详细的讲解,本节重点介绍剩下的这 2 个成员方法。 emp[详细]
-
C++ STL set删除数据 erase 和clear方式
所属栏目:[语言] 日期:2022-07-15 热度:84
如果想删除 set 容器存储的元素,可以选择用 erase() 或者 clear() 成员方法。 set 类模板中,erase() 方法有 3 种语法格式,分别如下: //删除 set 容器中值为 val 的元素 size_type erase (const value_type val); //删除 position 迭代器指向的元素 ite[详细]
-
C++ STL multiset容器说明
所属栏目:[语言] 日期:2022-07-15 热度:76
前面章节中,对 set 容器做了详细的讲解。回忆一下,set 容器具有以下几个特性: 不再以键值对的方式存储数据,因为 set 容器专门用于存储键和值相等的键值对,因此该容器中真正存储的是各个键值对的值(value); set 容器在存储数据时,会根据各元素值的[详细]
-
C++ STL无序容器 哈希容器 是啥
所属栏目:[语言] 日期:2022-07-15 热度:112
继 map、multimap、set、multiset 关联式容器之后,从本节开始,再讲解一类特殊的关联式容器,它们常被称为无序容器、哈希容器或者无序关联容器。 注意,无序容器是 C++ 11 标准才正式引入到 STL 标准库中的,这意味着如果要使用该类容器,则必须选择支持[详细]
-
C++ STL unordered_map容器用途详解
所属栏目:[语言] 日期:2022-07-15 热度:53
C++ STL 标准库中提供有 4 种无序关联式容器,本节先讲解 unordered_map 容器。 unordered_map 容器,直译过来就是无序 map 容器的意思。所谓无序,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 ma[详细]
-
C++ unordered_map迭代器的用处
所属栏目:[语言] 日期:2022-07-15 热度:59
C++ STL 标准库中,unordered_map 容器迭代器的类型为前向迭代器(又称正向迭代器)。这意味着,假设 p 是一个前向迭代器,则其只能进行 *p、p++、++p 操作,且 2 个前向迭代器之间只能用 == 和 != 运算符做比较。 在 unordered_map 容器模板中,提供了表[详细]
-
C++ STL unordered_map获取元素的4种方案
所属栏目:[语言] 日期:2022-07-15 热度:144
通过前面的学习我们知道,unordered_map 容器以键值对的方式存储数据。为了方便用户快速地从该类型容器提取出目标元素(也就是某个键值对的值),unordered_map 容器类模板中提供了以下几种方法。 1) unordered_map 容器类模板中,实现了对 [ ] 运算符的重[详细]
-
C++ unordered_map insert用法详解
所属栏目:[语言] 日期:2022-07-15 热度:68
为了方便用户向已建 unordered_map 容器中添加新的键值对,该容器模板中提供了 insert() 方法,本节就对此方法的用法做详细的讲解。 unordered_map 模板类中,提供了多种语法格式的 insert() 方法,根据功能的不同,可划分为以下几种用法。 1) insert() 方[详细]
-
C++ unordered_map emplace 和emplace_hint方式
所属栏目:[语言] 日期:2022-07-15 热度:99
和前面学的 map、set 等容器一样,C++ 11 标准也为 unordered_map 容器新增了 emplace() 和 emplace_hint() 成员方法,本节将对它们的用法做详细的介绍。 我们知道,实现向已有 unordered_map 容器中添加新键值对,可以通过调用 insert() 方法,但其实还有[详细]
-
嵌套执行make的示范
所属栏目:[语言] 日期:2022-07-14 热度:165
Makefile 中 嵌套执行 make 大部分是在大的工程项目中使用的,那么我们就通过一个大的项目工程来详细的分析一下如何嵌套执行 make。 假设有一个 MP3 player 的应用程序,它可以被划分为若干个组件:用户界面(ui)、编解码器(codec)以及数据管理库(db)[详细]
-
make命令参数和选项大合集
所属栏目:[语言] 日期:2022-07-14 热度:198
我们在在执行 make 命令时,有的时候需要加上一下参数选项来保证我们的程序的执行,其实之前已经遇到过 make 在执行命令的时候需要添加上参数选项,比如只打印命令但不执行使用的参数是 -n ,还有只执命令不打印命令的参数选项是 -s,包含其它文件的路径参[详细]
-
Makefile目标类别大汇总
所属栏目:[语言] 日期:2022-07-14 热度:84
这个章节主要讲解的是模式规则中的目标。规则中的目标形式是多种多样的,它可以是一个或多个的文件、可以是一个伪目标,这是我们之前讲到过的,也是经常使用的。其实规则目标还可以是其他的类型,下面是对这些类型的详细的说明。 强制目标 如果一个目标中[详细]
-
Makefile变量的高级用处
所属栏目:[语言] 日期:2022-07-14 热度:70
我们之前已经学习过变量的定义和基本的赋值运算,我们可以更深入的了解一下变量的一些高级的用法。高级使用方法有两种:一种是变量的替换引用,一种是变量的嵌套引用。这是我们在使用的时候比较常见的两种使用方法,我们来具体分析使用一下变量的这两种高[详细]
-
Makefile命令的编辑
所属栏目:[语言] 日期:2022-07-14 热度:74
通过上个章节的描述,我们已经知道了 Makefile 的规则是什么,他是由依赖关系规则和命令组成的。所使用的命令是由 shell 命令行组成,他们是一条一条执行的。多个命令之间要使用分号隔开,Makefile 中的任何命令都要以tab键开始。多个命令行之间可以有空行[详细]
-
Makefile include文件包括
所属栏目:[语言] 日期:2022-07-14 热度:55
这个章节主要讲的是 Makefile 中包含其他的文件。包含其他文件使用的关键字是 include,和 C 语言包含头文件的方式相同。 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makef[详细]
-
Makefile嵌套实行make
所属栏目:[语言] 日期:2022-07-14 热度:132
这个章节主要讲解的是在 Makefile 中嵌套执行 make。我们都知道在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,也就说很多的源文件被放置在了不同的目录下。每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有[详细]
-
Makefile常用字符串处置函数
所属栏目:[语言] 日期:2022-07-14 热度:96
学习使用函数之前,先来看一下函数的语法结构。函数的调用和变量的调用很像。引用变量的格式为$(变量名),函数调用的格式如下: $(function arguments) 或者是 ${function arguments} 其中,function 是函数名,arguments 是函数的参数,参数之间要用逗号[详细]
-
Makefile常用文件名运作函数
所属栏目:[语言] 日期:2022-07-14 热度:186
我们在编写 Makefile 的时候,很多情况下需要对文件名进行操作。例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等。当遇到这样的问题的时手动修改是不太可能的,因为文件可能会很多,而且 Makefile 中操作文件名可能不止一次。所以 Makefile[详细]
-
Makefile中另外的常用函数
所属栏目:[语言] 日期:2022-07-14 热度:92
之前学习过了 Makefile 中的字符串操作文件和文件名操作函数,我们今天再来看一下 Makefile 中的其他的函数。以下是这些函数的详细说明。 $(foreach var,list,text) 函数的功能是:把参数list中的单词逐一取出放到参数var所指定的变量中,然后再执行text所[详细]
-
C++ 11是什么 C++ 11标准的原由
所属栏目:[语言] 日期:2022-07-14 热度:198
C++ 这门编程语言的历史可以追溯至 1979 年,当时的 Bjarne Stroustrup(C++ 之父,后续简称 Stroustrup)还在使用 Simula 语言进行开发工作。 Simula 语言被认为是第一个面向对象的编程语言。Stroustrup 也非常赞赏 Simula 语言的这种特性,但由于实例开[详细]
-
C++ auto类型推导完全策略
所属栏目:[语言] 日期:2022-07-14 热度:64
在 C++11 之前的版本(C++98 和 C++ 03)中,定义变量或者声明变量之前都必须指明它的类型,比如 int、char 等;但是在一些比较灵活的语言中,比如 C#、JavaScript、PHP、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)[详细]
-
C++ decltype类型推导完全战略
所属栏目:[语言] 日期:2022-07-14 热度:119
decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。不了解 auto 用法的读者请转到《C++ auto》。 decltype 是declare type的缩写,译为声明类型。 既然已经有了 auto 关键字,为什么还需要 decltype 关键字呢[详细]
-
C++返回值类型后置 跟踪返回值类别
所属栏目:[语言] 日期:2022-07-14 热度:186
在泛型编程中,可能需要通过参数的运算来得到返回值的类型。考虑下面这个场景: 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-14 热度:89
大家都知道,在 C++ 中可以通过 typedef 重定义一个类型: typedef unsigned int uint_t; 被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。因此,下面这样将不是合法的函数重载: void func(unsigned int); void func(uint_t); //[详细]
-
链接库是啥 动态链接库和静态链接库
所属栏目:[语言] 日期:2022-07-14 热度:52
静态链接库和动态链接库是最常用的两种共享代码的方法,从本节开始,您将系统地了解它们,并彻底搞清楚以下问题: 什么是库,什么是链接库,以及静态链接库和动态链接库的区别; 如何手动创建一个静态或者动态链接库; 如何在自己的项目中使用第三方提供的[详细]
