-
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 热度:124
和前面学的 map、set 等容器一样,C++ 11 标准也为 unordered_map 容器新增了 emplace() 和 emplace_hint() 成员方法,本节将对它们的用法做详细的介绍。 我们知道,实现向已有 unordered_map 容器中添加新键值对,可以通过调用 insert() 方法,但其实还有[详细]
-
C++ STL是什么 有啥用
所属栏目:[语言] 日期:2022-07-15 热度:150
在已有 C++ 尤其是 C++ 模板的基础上,从本节开始,我们开始系统地学习 STL 标准模板库,首先来了解什么是 STL,以及学习 STL 有什么用? STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是[详细]
-
C++ STL的发展历程是啥样的
所属栏目:[语言] 日期:2022-07-15 热度:197
Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。 在 20 世纪 70 年代,Stepanov 开始考虑,在保证效率的前提下,是否能将算法从诸[详细]
-
C++ STL版本有什么
所属栏目:[语言] 日期:2022-07-15 热度:133
自 1998 年 ANSI/ISO C++ 标准正式定案,C++ STL 规范版本正式通过以后,由于其实开源的,各个 C++ 编译器厂商在此标准的基础上,实现了满足自己需求的 C++ STL 泛型库,主要包括 HP STL、SGI STL、STLport、PJ STL、Rouge Wave STL 等。 HP STL HP STL 是[详细]
-
C++ STL基础组成 6大组件+13个头文件
所属栏目:[语言] 日期:2022-07-15 热度:74
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。 另外,在惠普实验室最初发行的版本中,STL 被组织成 48 个头文件;但在 C++ 标准中,它们被重新组[详细]
-
GNU开源精神及其发展进程
所属栏目:[语言] 日期:2022-07-15 热度:192
通过前面对 STL 各种民间版本的介绍我们知道,全世界所有的 STL 实现版本都源于 Stepanov 和 Meng Lee 完成的原始版本(也就是 HP STL),该版本的每一个头文件中都有一份声明,即允许任何人任意运用、拷贝、修改、传播、贩卖这些代码,无需付费,但唯一的[详细]
-
C++11引用限定符的用处
所属栏目:[语言] 日期:2022-07-15 热度:75
在《C++右值引用》一节中,我们给您介绍了左值和右值。值得一提的是,左值和右值的区分也同样适用于类对象,本节中将左值的类对象称为左值对象,将右值的类对象称为右值对象。 默认情况下,对于类中用 public 修饰的成员函数,既可以被左值对象调用,也可[详细]
-
C++11 shared_ptr智能指针 超级具体
所属栏目:[语言] 日期:2022-07-15 热度:193
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如: 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使[详细]
-
C++ STL容器叫做什么
所属栏目:[语言] 日期:2022-07-15 热度:82
在实际的开发过程中,合理组织数据的存取与选择处理数据的算法同等重要,存取数据的方式往往会直接影响到对它们进行增删改查操作的复杂程度和时间消耗。事实上,当程序中存在对时耗要求很高的部分时,数据结构的选择就显得尤为重要,有时甚至直接影响程序[详细]
-
迭代器是什么 C++ STL迭代器 iterator 用法细说
所属栏目:[语言] 日期:2022-07-15 热度:69
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用迭代器(iterator)来实现。那么,迭代器到底是什么呢? 常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器[详细]
-
C++序列式容器 STL序列式容器 是啥
所属栏目:[语言] 日期:2022-07-15 热度:108
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 需要注意的是,序列容器只是一类容器的统称,并不指具体的某个容器,[详细]
-
Java反射机制是什么
所属栏目:[语言] 日期:2022-07-14 热度:113
Java 反射机制是 Java 语言的一个重要特性。在学习 Java 反射机制前,大家应该先了解两个概念,编译期和运行期。 编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻[详细]
-
Java反射机制API
所属栏目:[语言] 日期:2022-07-14 热度:152
实现 Java 反射机制的类都位于 java.lang.reflect 包中,java.lang.Class 类是 Java 反射机制 API 中的核心类。本节将从这两个方面讲解 Java 反射机制 API。 可参考《Java反射机制的基本概念》一节中介绍的关于 Java 反射机制获取类对象相关信息的方法,来[详细]
-
Java通过反射访问构造方法
所属栏目:[语言] 日期:2022-07-14 热度:163
为了能够动态获取对象构造方法的信息,首先需要通过下列方法之一创建一个 Constructor 类型的对象或者数组。 getConstructors() getConstructor(Class?parameterTypes) getDeclaredConstructors() getDeclaredConstructor(Class?...parameterTypes) 如果是[详细]
-
Java通过反射执行方法
所属栏目:[语言] 日期:2022-07-14 热度:154
要动态获取一个对象方法的信息,首先需要通过下列方法之一创建一个 Method 类型的对象或者数组。 getMethods() getMethods(String name,Class? parameterTypes) getDeclaredMethods() getDeclaredMethods(String name,Class?...parameterTypes) 如果是访问[详细]
-
Java通过反射访问成员变量
所属栏目:[语言] 日期:2022-07-14 热度:91
通过下列任意一个方法访问成员变量时将返回 Field 类型的对象或数组。 getFields() getField(String name) getDeclaredFields() getDeclaredField(String name) 上述方法返回的 Field 对象代表一个成员变量。例如,要访问一个名称为 price 的成员变量,示[详细]
-
Java在远程方法调用中运用反射机制
所属栏目:[语言] 日期:2022-07-14 热度:188
上一节详细介绍了如何使用 java.lang.reflect 包提供的 Constructor 类获取构造方法的信息、使用 Method 类获取成员方法的信息以及使用 Field 类获取成员变量的信息。 本案例将介绍反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端[详细]
-
Java流是什么 输入 输出流又是什么
所属栏目:[语言] 日期:2022-07-14 热度:172
在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 在学习输入和输出流之前,我们要明白为什么应用程序需要输入和输出流。例如,我们[详细]
-
Java系统流
所属栏目:[语言] 日期:2022-07-14 热度:121
每个 Java 程序运行时都带有一个系统流,系统流对应的类为 java.lang.System。Sytem 类封装了 Java 程序运行时的 3 个系统流,分别通过 in、out 和 err 变量来引用。这 3 个系统流如下所示: System.in:标准输入流,默认设备是键盘。 System.out:标准输[详细]
-
Java字符编码介绍
所属栏目:[语言] 日期:2022-07-14 热度:102
计算机中,任何的文字都是以指定的编码方式存在的,在 Java 程序的开发中最常见的是 ISO8859-1、GBK/GB2312、Unicode、 UTF 编码。 Java 中常见编码说明如下: ISO8859-1:属于单字节编码,最多只能表示 0~255 的字符范围。 GBK/GB2312:中文的国标编码,[详细]
-
Java File类 文件操作类 详解
所属栏目:[语言] 日期:2022-07-14 热度:66
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。 File 类不能访问文件内容本身,如果需要[详细]
-
Makefile常用字符串处置函数
所属栏目:[语言] 日期:2022-07-13 热度:67
学习使用函数之前,先来看一下函数的语法结构。函数的调用和变量的调用很像。引用变量的格式为$(变量名),函数调用的格式如下: $(function arguments) 或者是 ${function arguments} 其中,function 是函数名,arguments 是函数的参数,参数之间要用逗号[详细]
-
Makefile常用文件名运作函数
所属栏目:[语言] 日期:2022-07-13 热度:116
我们在编写 Makefile 的时候,很多情况下需要对文件名进行操作。例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等。当遇到这样的问题的时手动修改是不太可能的,因为文件可能会很多,而且 Makefile 中操作文件名可能不止一次。所以 Makefile[详细]
-
Makefile中另外的常用函数
所属栏目:[语言] 日期:2022-07-13 热度:183
之前学习过了 Makefile 中的字符串操作文件和文件名操作函数,我们今天再来看一下 Makefile 中的其他的函数。以下是这些函数的详细说明。 $(foreach var,list,text) 函数的功能是:把参数list中的单词逐一取出放到参数var所指定的变量中,然后再执行text所[详细]