-
C++ STL版本有什么
所属栏目:[语言] 日期:2022-07-14 热度:83
自 1998 年 ANSI/ISO C++ 标准正式定案,C++ STL 规范版本正式通过以后,由于其实开源的,各个 C++ 编译器厂商在此标准的基础上,实现了满足自己需求的 C++ STL 泛型库,主要包括 HP STL、SGI STL、STLport、PJ STL、Rouge Wave STL 等。 HP STL HP STL 是 A[详细]
-
C++ STL基础组成 6大组件+13个头文件
所属栏目:[语言] 日期:2022-07-14 热度:65
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。 另外,在惠普实验室最初发行的版本中,STL 被组织成 48 个头文件;但在 C++ 标准中,它们被重新组织[详细]
-
GNU开源精神及其发展进程
所属栏目:[语言] 日期:2022-07-14 热度:120
通过前面对 STL 各种民间版本的介绍我们知道,全世界所有的 STL 实现版本都源于 Stepanov 和 Meng Lee 完成的原始版本(也就是 HP STL),该版本的每一个头文件中都有一份声明,即允许任何人任意运用、拷贝、修改、传播、贩卖这些代码,无需付费,但唯一的条[详细]
-
C++11引用限定符的用处
所属栏目:[语言] 日期:2022-07-14 热度:127
在《C++右值引用》一节中,我们给您介绍了左值和右值。值得一提的是,左值和右值的区分也同样适用于类对象,本节中将左值的类对象称为左值对象,将右值的类对象称为右值对象。 默认情况下,对于类中用 public 修饰的成员函数,既可以被左值对象调用,也可以[详细]
-
C++11 shared_ptr智能指针 超级具体
所属栏目:[语言] 日期:2022-07-14 热度:139
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如: 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用[详细]
-
C++ STL容器叫做什么
所属栏目:[语言] 日期:2022-07-14 热度:145
在实际的开发过程中,合理组织数据的存取与选择处理数据的算法同等重要,存取数据的方式往往会直接影响到对它们进行增删改查操作的复杂程度和时间消耗。事实上,当程序中存在对时耗要求很高的部分时,数据结构的选择就显得尤为重要,有时甚至直接影响程序执[详细]
-
迭代器是什么 C++ STL迭代器 iterator 用法细说
所属栏目:[语言] 日期:2022-07-14 热度:56
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用迭代器(iterator)来实现。那么,迭代器到底是什么呢? 常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器 5[详细]
-
C++序列式容器 STL序列式容器 是啥
所属栏目:[语言] 日期:2022-07-14 热度:81
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 需要注意的是,序列容器只是一类容器的统称,并不指具体的某个容器,序[详细]
-
Java.util.logging JDK自带录入日志类
所属栏目:[语言] 日期:2022-07-12 热度:197
每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用 System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用[详细]
-
GCC编译器下载和安装教案 针对Linux发行版
所属栏目:[语言] 日期:2022-07-12 热度:143
由于 Linux 操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux 操作系统,如 CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,大多数都默认装有 GCC 编译器(版本通常都较低)。 如果读者不清楚当前使用的 Linux 发行版是否已经装有 GCC 编译器,[详细]
-
GCC的组成部分以及运用到的软件
所属栏目:[语言] 日期:2022-07-12 热度:138
GCC 是由许多组件组成的。表 1 列出了 GCC 的各个部分,但它们也并不总是出现 的。有些部分是和语言相关的,所以如果没有安装某种特定语言,系统:中就不会出现相关的文件。 表1:GCC 安装的各个部分 部分 描述 c++ gcc 的一个版木,默认语言设置为 C++,而且[详细]
-
gcc和g++是什么 有什么差异
所属栏目:[语言] 日期:2022-07-12 热度:174
发展至今(2020 年 6 月份),GCC 编译器已经更新至 10.1.0 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C++ 。 除此之外,当下的 GCC 编译器还支持编译 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAI[详细]
-
GCC自动鉴别的文件扩展名 一览表
所属栏目:[语言] 日期:2022-07-12 热度:190
通过前面的学习我们知道,对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器。并且对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件;而对于以 .cpp 为扩展名的文件,GCC 会自动将其视为 C++ 源代码文件。 除此之外,GCC 编译[详细]
-
GCC -std编译目标一览表
所属栏目:[语言] 日期:2022-07-12 热度:149
要知道,任何一门编程语言都有相关的组织和团体在不停的维护和更新。原因很简单,时代在发展,编程语言如果停滞不前,最终就会被淘汰。 以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89(偶尔又称为 C90)、C94(C89 的修订版)、C99、C11[详细]
-
GCC编译C C++程序 一步做成
所属栏目:[语言] 日期:2022-07-12 热度:120
通过前面章节的学习我们知道,GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。本节将重点给大家讲解如何编写 gcc 或者 g++ 指令来编译 C、C++ 程序。 注意,在前面的讲[详细]
-
GCC -E选项 对源程序做预处理运作
所属栏目:[语言] 日期:2022-07-12 热度:140
通过前面的学习我们知道,根据源代码文件后缀名的不同,gcc 指令可以自行判断出该源程序是由哪种编程语言编写,从而完成由源代码到可执行代码的转换工作。考虑到本教程主要讲解如何使用 gcc 指令运行 C/C++ 程序,因此本节就以 C 语言程序为例(如下所示),[详细]
-
GCC -S项目 编译非汇编文件
所属栏目:[语言] 日期:2022-07-12 热度:58
我们知道,从 C、C++源代码生成可执行文件需要经历 4 个过程,分别为预处理、编译、汇编和链接。其中,《GCC -E选项:对源程序做预处理操作》一节以 demo.c 源程序文件为例,演示了如何使用 GCC 执行预处理操作,并生成了相应的 demo.i 预处理文件。 [root@b[详细]
-
平衡二叉树 AVL树 与C语言实现
所属栏目:[语言] 日期:2022-07-11 热度:165
上一节介绍如何使用二叉排序树实现动态查找表,本节介绍另外一种实现方式平衡二叉树。 平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在[详细]
-
哈希表 散列表 详解 包含哈希表处理冲突的方式
所属栏目:[语言] 日期:2022-07-11 热度:96
前面介绍了静态查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。 而本节所介绍的哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的[详细]
-
插入排序算法及C语言做成
所属栏目:[语言] 日期:2022-07-11 热度:52
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。 直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到[详细]
-
折半插入排序算法 C语言代码达成
所属栏目:[语言] 日期:2022-07-11 热度:117
上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法。 该算法的具[详细]
-
2路插入排序算法说明
所属栏目:[语言] 日期:2022-07-11 热度:132
2-路插入排序算法是在折半插入排序的基础上对其进行改进,减少其在排序过程中移动记录的次数从而提高效率。 具体实现思路为:另外设置一个同存储记录的数组大小相同的数组 d,将无序表中第一个记录添加进 d[0] 的位置上,然后从无序表中第二个记录开始,同 d[详细]
-
表插入排行算法
所属栏目:[语言] 日期:2022-07-11 热度:149
前面章节中所介绍到的三种插入排序算法,其基本结构都采用数组的形式进行存储,因而无法避免排序过程中产生的数据移动的问题。如果想要从根本上解决只能改变数据的存储结构,改用链表存储。 表插入排序,即使用链表的存储结构对数据进行插入排序。在对记录按[详细]
-
冒泡排序 起泡排序 算法与其C语言实现
所属栏目:[语言] 日期:2022-07-11 热度:173
起泡排序,别名冒泡排序,该算法的核心思想是将无序表中的所有记录,通过两两比较关键字,得出升序序列或者降序序列。 对无序表的第一次起泡排序,最终将无序表中的最大值 97 找到并存储在表的最后一个位置。具体实现过程为: 首先 49 和 38 比较,由于 3849[详细]
-
简单选择排序算法 C语言解析版
所属栏目:[语言] 日期:2022-07-11 热度:141
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上。 例如对无序表{56,12,80,91,20}采用简单选择排序算法进行排序,具体过程为: 第一次遍历时,从下[详细]