05 2023 档案
摘要:# 1.为什么需要链表? 链表是一种灵活的数据结构,它允许在内存中动态地存储和操作元素。以下是一些需要使用链表的原因: 1. 动态数组的缺点:数组的大小是在程序运行时固定的,如果需要添加或删除元素,就需要重新分配内存并复制数据。这会导致大量的内存浪费和性能问题。而链表可以动态地调整大小,只需要增加或
阅读全文
摘要: # 1.动态数组结构 上图所示,该动态数组有3个元素,空间容量是6,每个元素类型为void\*,因为void\*可
阅读全文
摘要:```C++ int main(int argc,char*argv[]) ``` 这段代码是C++语言中的主函数(main function),它是一个程序的入口点。在调用该函数之前,需要先定义一个主函数,并在其中编写程序逻辑。 `int main(int argc,char*argv[])` 中
阅读全文
摘要:complex_test.cpp ```C++ #pragma once #include #include "complex.h" using namespace std; ostream& operator re += r.re; ths->im += r.im; return *ths; }
阅读全文
摘要:# 1.概述 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是**”条件编译“。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。** 条件编译命令最常见的形式为: ```C++ #i
阅读全文
摘要:关联容器支持高效的关键字查找和访问。两个主要的关联容器(associative-container)类型是map和set。map中的元素是一些关键字-值(key-value)对:关键字起到索引的作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字:set支持高效的关键字查询操作 检查一
阅读全文
摘要:顺序容器只定义了很少的操作:在多数情况下,我们可以添加和删除元素、访问首尾元素、确定容器是否为空以及获得指向首元素或尾元素之后位置的迭代器。 用户可能还希望做其他很多有用的操作:查找特定元素、替换或删除一个特定值、重排元素顺序等。 标准库并未给每个容器都定义成员函数来实现这些操作,而是定义了一组泛型
阅读全文
摘要:1. STL概论 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,让程序员的心血不止于随时间的迁移,人事异动而烟消云散,从函数(functions),类别(classes),函数库(function libraries),类别库(class libra
阅读全文
摘要:为了支持快速随机访问,vector将元素连续存储 每个元素紧挨着前一个元素存储。通常情况下,我们不必关心一个标准库类型是如何实现的,而只需关心它如何使用。然而,对于vector和string,其部分实现渗透到了接口中。 假定容器中元素是连续存储的,且容器的大小是可变的,考虑向vector或strin
阅读全文
摘要:顺序容器和关联容器的不同之处在于两者组织元素的方式。这些不同之处直接关系到了元素如何存储、访问、添加以及删除。本部分将介绍顺序容器所特有的操作。 1.向顺序容器添加元素 除array外,所有标准库容器都提供灵活的内存管理。在运行时可以动态添加或删除元素来改变容器大小。表9.5列出了向顺序容器(非ar
阅读全文
摘要:容器类型上的操作形成了一种层次: ●某些操作是所有容器类型都提供的(参见表9.2,第295页)。 ●另外一些操作仅针对顺序容器(参见表9.3,第299页)、关联容器(参见表11.7,第388页)或无序容器(参见表11.8,第395页)。 ●还有一些操作只适用于一小部分容器。 一般来说,每个容器都定义
阅读全文
摘要:# 110.C++顺序容器 一个容器就是一些特定类型对象的集合。顺序容器(sequential container)为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。与之相对的,有序和无序关联容器, 则根据关键字的值来存储元素。 标准库还提供了三
阅读全文
摘要:为了支持不同种类的IO处理操作,在istream和ostream之外,标准库还定义了其他一些IO类型。 下表列出了这些类型,分别定义在三个独立的头文件中:iostream定义了用于读写流的基本类型,fstream定义了读写 命名文件的类型,sstream定义了读写内存string对象的类型。 表8.
阅读全文
摘要:类可以定义自己的数据类型 通过定义新的类型来反映待解决问题中的各种概念 数据抽象能帮助我们将 对象的具体实现 与 对象所能执行的操作 分离 开来 原文链接:https://blog.csdn.net/weixin_48524215/article/details/115525133 1.设计 Sal
阅读全文
摘要:函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如: ```C++ //比较两个string对象的长度 bool lengthCompare(const string&, const string&); ``` 该函
阅读全文
摘要:1.默认实参 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参(default argument)调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。 例如,我们使用string对象表示窗口的内容。 一般情况下,我们希望该窗
阅读全文
摘要:return 语句终止当前比在执行的函数并将控制权返回到调用该函数的地方。 return语句有两种形式: return; return expression; 1.无返回值函数 没有返回值的 return 语句只能用在返回类型是 void 的函数中。返回 void 的函数不要求非得有 return
阅读全文
摘要:在C++语言中,名字有作用域(参见2.2.4节,第43页),对象有生命周期(lifetime)。理解这两个概念非常重要。 ●名字的作用域是程序文本的一部分,名字在其中可见。 ●对象的生命周期是程序执行过程中该对象存在的一段时间。 如我们所知,函数体是一个语句块。块构成一个新的作用域,我们可以在其中定
阅读全文
摘要:C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或其他序列的所有元素。范围for语句(range for statement)的语法形式是: for (declaration : expression) statement expression表示的必须是个序列,比如用花括号括起来
阅读全文
摘要:下表列出了 C++ 支持的赋值运算符: | 运算符 | 描述 | 实例 | | : : | : : | : : | | = | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C | | += | 加且赋值运算符,把右边操作数加上左边操作数的结果
阅读全文
摘要:尽管能计算得到尾后指针,但这种用法极易出错。为了让指针的使用更简单、更安全,C++11新标准引入了两个名为begin和end的函数。这两个函数与容器中的两个同名成员(参见3.4.1节,第95页)功能类似,不过数组毕竟不是类类型,因此这两个函数不是成员函数。正确的使用形式是将数组作为它们的参数: in
阅读全文
摘要:1.一维数组的基本概念 数组是一组数据类型相同的变量,可以存放一组数据。 1)创建数组 声明数组的语法:数据类型 数组名[数组长度]; 注意:数组长度必须是整数,可以是常量,也可以是变量和表达式。 C90规定必须用常量表达式指明数组的大小,C99允许使用整型非常量表达式。经测试,在VS中可以用整型非
阅读全文