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