C ++
文章平均质量分 91
书山有路勤为径,学海无涯苦作舟
缺点灵气儿
努力成长的小白菜
展开
-
Day 31 C++ STL常用算法(下)
常用拷贝和替换算法copy——容器内指定范围的元素拷贝到另一容器中函数原型注意——利用copy算法在拷贝时,目标容器要提前开辟空间示例replace——将容器内指定范围的第一个旧元素修改为新元素函数原型注意——replace只会替换区间内满足条件的第一个旧元素示例replace_if——在指定范围内将所有旧元素修改为新元素函数原型注意——replace会替换区间内满足条件的所有旧元素swap——互换两个容器的元素函数原型注意——swap交换容器时,注意交换的容器要同种类型类型要原创 2023-08-17 11:21:01 · 1535 阅读 · 9 评论 -
Day 30 C++ STL 常用算法(上)
算法主要是由头文件组成。头文件是STL中最大的头文件之一,它提供了一系列的算法操作,包括比较、交换、查找、遍历、复制、修改等等。排序算法:sort()、stable_sort()、partial_sort()等。查找算法:find()、find_if()、binary_search()等。数值算法:accumulate()、inner_product()、adjacent_difference()等。复制和移动算法:copy()、move()、copy_if()等。原创 2023-08-14 21:21:28 · 250 阅读 · 12 评论 -
Day 29 C++ STL- 函数对象(Function Object)(仿函数)
我们使用函数对象实例 multiplyByTwo 进行函数调用,以及将函数对象 MultiplyBy(3) 作为参数传递给 std::transform() 算法,对容器 nums 中的元素进行乘法操作。通过使用函数对象 MyCompare(),我们重新对向量 v 进行排序,这次的输出结果为 50 40 30 20 10,与上一次排序的结果相反,符合我们设定的从大到小排序策略。首先,在 test01() 函数中,我们创建一个整型向量 v,并添加一些数字元素。函数对象(仿函数)是一个 重载了。原创 2023-08-13 10:34:50 · 247 阅读 · 11 评论 -
Day 28 C++ (映射)map 容器 / multimap 容器 (多重映射)
C++中的map是一种关联容器,它提供了一种键-值(key-value)对的存储方式。map容器中的元素是按照键的顺序进行排序的,并且每个键都唯一。通过使用键来访问其相应的值,我们可以在O(log n)的时间复杂度内进行快速的查找、插入和删除操作。map与set类似,但不同之处在于map存储的是键值对(key-value pair),而set只存储单个元素。每个键值对在map中被视为一个元素,由键(key)和值(value)组成。键用于唯一标识元素,值则是与键相关联的数据。原创 2023-08-12 17:13:54 · 332 阅读 · 13 评论 -
Day 27 C++ set/ multiset 容器,pair对组
set ,mutiset , pair对组原创 2023-08-11 10:25:45 · 253 阅读 · 10 评论 -
Day 26 C++ list容器(链表)
链表(list)是一种物理存储单元上非连续的存储结构,可以将数据进行链式存储,数据元素的逻辑顺序是通过链表中的指针链接实现的。STL中的链表是一个双向循环链表。原创 2023-08-10 17:48:45 · 436 阅读 · 5 评论 -
Day 25 C++ queue 容器(队列)
在C++中,队列(queue)是一种常见的数据结构,采用先进先出(First-In-First-Out,FIFO)的原则,它有两个出口。队列的特点是只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头)。在队列中,只有最早添加的元素可以被访问和操作,而后续添加的元素需要等到前面的元素被处理完毕后才能被访问。queue采用模板类实现,queue对象的默认构造形式拷贝构造函数入队 — push出队 — pop返回队头元素 — front返回队尾元素 — back。原创 2023-08-09 10:39:16 · 216 阅读 · 2 评论 -
Day 25 C++ stack容器(栈)
在C++中,栈(stack)是一种常见的数据结构,采用后进先出(Last-In-First-Out,LIFO)的原则。栈的特点是它只有一个出口,只允许在一端进行插入和删除操作,这一端被称为栈顶。在栈中,只有位于栈顶的元素可以被访问和操作,而其他元素则无法直接访问。栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为入栈 — push出栈 — pop返回栈顶 — top判断栈是否为空 — empty返回栈大小 — size。原创 2023-08-09 10:21:48 · 165 阅读 · 0 评论 -
C++ for循环,你真的学懂了吗
概念组成部分初始化表达式(Initialization Expression)循环条件(Condition)增量/减量表达式(Increment/Decrement Expression)循环体(Loop Body)执行过程种类基本 for 循环for 循环遍历数组嵌套 for 循环无限循环范围基于范围的 for 循环语法示例C++11 引入的使用范围迭代器的 for 循环语法示例C++11 引入的带有初始化列表的 for 循环语法示例C++17 引入的结构化绑定原创 2023-08-08 11:29:47 · 2277 阅读 · 6 评论 -
Day 24 C++ deque容器
双端数组,它是C++标准库中的容器之一,用于存储和管理数据可以对头端进行插入删除操作“deque” 是英文 “double-ended queue” 的缩写,它是一种允许在两端进行高效插入和删除操作的数据结构。因此,在中文中常常将其称为 “双端队列” 或者 “双向队列”。deque 提供了类似于 vector 的动态数组功能,但同时也允许在两端高效地插入和删除元素插入和删除提供的位置是迭代器插入多个数据无返回值删除返回下一个数据位置插入,则原来位置的数据往后挪。原创 2023-08-08 10:59:51 · 132 阅读 · 0 评论 -
Day 23 C++ vector容器
C++的vector容器是一个动态数组,提供了存储和操作元素的功能。它是标准模板库(STL)的一部分,在头文件中定义。vector数据结构和数组非常相似,也称为单端数组动态数组)(也被称为向量。原创 2023-08-08 10:15:52 · 179 阅读 · 2 评论 -
Day 22 C++ STL常用容器——string容器
封装了一些成员方法:std::string类提供了许多有用的成员方法来操作字符串,包括查找(find())、拷贝(copy())、删除(erase())、替换(replace())、插入(insert())等。string类封装了一系列成员函数来操作字符串,这些成员函数包括字符串的创建、复制、拼接、查找、替换等等。综上所述,string是C++风格的字符串,本质上是一个类,在C++中广泛用于处理和操作字符串数据,提供了便利、安全和高级的字符串处理功能。//从pos位置查找s的前n个字符第一次位置。原创 2023-08-07 11:20:41 · 141 阅读 · 0 评论 -
Day 21 C ++ STL(Standard Template Library,标准模板库)
STL六大组件,容器,算法,迭代器,数据结构原创 2023-08-06 11:14:25 · 328 阅读 · 2 评论 -
Day 20 C++ 模板
函数模板,类模板,范式编程原创 2023-08-05 10:11:45 · 235 阅读 · 0 评论 -
Day 12 C++ 面向对象
面向对象面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序的设计和实现以对象的思维方式进行组织。面向对象编程的核心概念包括以下几个方面:类(Class):类是面向对象编程的基本单位,它定义了一种具有相同属性和行为的对象的模板。类中包含了成员变量(属性)和成员函数(方法),用于描述对象的状态和行为。对象(Object):对象是类的实例化,是具体的实体。通过创建对象,我们可以使用类中定义的属性和方法进行操作。原创 2023-08-04 13:41:29 · 134 阅读 · 0 评论 -
浅析 C++ 的输入输出
输入输出什么是输入输出输出(output)输入(input)输入输出流的头文件`iostream`输出流类的抽象基类`ostream`输入流类的抽象基类`istream``ifstream` 类`ofstream` 类`fstream` 类原创 2023-08-04 13:08:23 · 601 阅读 · 0 评论 -
Day 19 C++ 文件操作
文本文件和二进制文件的写入和读取,以及输入输出的理解原创 2023-08-04 12:08:10 · 169 阅读 · 0 评论 -
Day 18 C++ 多态
多态,虚函数,纯虚函数,抽象类原创 2023-08-04 09:46:02 · 133 阅读 · 0 评论 -
Day17 C++ 继承
public继承表示基类的公有成员在派生类中仍为公有成员。protected继承表示基类的公有和保护成员在派生类中变为保护成员。private继承表示基类的公有和保护成员在派生类中变为私有成员。任何派生类都无法访问父类的私有属性继承中 先调用父类构造函数,再调用子类构造函数,析构顺序与构造相反子类对象可以直接访问到子类中同名成员子类对象加作用域可以访问到父类同名成员当子类与父类拥有同名的成员函数,子类会隐藏父类中同名成员函数,加作用域可以访问到父类中同名函数。原创 2023-08-03 10:37:21 · 225 阅读 · 0 评论 -
lambda表达式以及关键字auto
Lambda 表达式是一种匿名函数,可以在需要函数对象的地方使用,简化了函数对象的定义和使用过程。Lambda 表达式可以用于替代显式地创建函数对象或传递函数指针的情况。尤其适用于一些只在特定上下文中使用的函数功能。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。原创 2023-08-02 09:58:23 · 396 阅读 · 0 评论 -
Day 16 C++ 运算符重载
我们可以使用运算符来调用 MyClass 对象的成员函数operator+。例如,a+ b实际上相当于调用了 a,其中 a是左操作数,b 是右操作数。无论是成员函数重载还是非成员函数重载,都可以实现相同的功能。选择使用哪种方式主要取决于代码的结构和设计需求。重载加号运算符的结果是使得MyClass对象可以直接使用加号进行相加操作,从而提高代码的可读性和可维护性。原创 2023-08-02 09:51:19 · 184 阅读 · 0 评论 -
Day 16 C++ 友元(friend)
Day 16 C++ 友元(friend)原创 2023-08-01 08:38:10 · 123 阅读 · 0 评论 -
Day 15 C++对象模型和this指针
非静态成员变量占对象空间静态成员变量不占对象空间只有非静态成员变量才属于类的对象上函数(包括静态成员函数)也不占对象空间,所有函数共享一个函数实例。原创 2023-07-31 10:11:30 · 139 阅读 · 0 评论 -
Day 14 C++ 对象的初始化和清理
没有参数的构造函数被称为默认构造函数。当对象被创建时,如果没有提供任何参数,就会调用默认构造函数。默认构造函数可以用来初始化对象的数据成员为默认值。如果我们没有定义构造函数,编译器会提供一个空实现的默认构造函数。编译器生成的默认构造函数和析构函数默认构造函数(Default Constructor)如果没有显式定义构造函数,编译器会自动生成一个空参数的默认构造函数。原创 2023-07-30 10:52:20 · 304 阅读 · 0 评论 -
Day 13 C++ 封装
使用class关键字定义一个类,并给它一个合适的名称。类应该代表一个概念、实体或对象,并具有相关的属性和行为。原创 2023-07-29 11:08:57 · 198 阅读 · 0 评论 -
Day 11 C++ 函数进阶
函数占位参数(placeholder parameter)是指在函数声明或定义中使用的没有具体类型和名称的参数。它们通常用于定义泛型函数,以允许在函数调用时指定具体的参数类型。语法返回值类型 函数名 (数据类型){}函数重载(function overloading)是指在同一个作用域内,定义多个具有相同名称但参数列表不同的函数。通过使用函数重载,我们可以使用相同的函数名来执行不同的操作,根据传递给函数的参数的类型和数量进行区分。原创 2023-07-28 10:29:27 · 122 阅读 · 0 评论 -
Day 10 C++ 引用
C++中的引用是一种别名,它允许我们使用不同的名称来引用同一变量。通过引用,我们可以通过一个变量名称来操作另一个变量的值,而无需使用指针。在C++中,引用使用&符号进行声明。原创 2023-07-27 10:20:00 · 99 阅读 · 0 评论 -
Day 9 C++ 内存分区模型
在栈区分配的数据不应返回其地址,因为一旦函数执行结束,栈上的数据将被清除,这意味着返回局部变量的地址可能会导致访问已经释放的内存,引发未定义的行为。为了避免这种情况,应始终返回指向堆上动态分配的内存的地址,或是返回全局变量的地址。在函数调用时,会为每个函数帧(函数调用的上下文)分配一段栈空间,函数返回后会自动释放该空间。需要注意的是,在使用堆区的内存时,要确保正确分配和释放内存,否则可能会导致内存泄漏或者因释放已释放内存而产生悬空指针。的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。原创 2023-07-26 09:33:16 · 909 阅读 · 0 评论 -
Day 8 C++ 结构体
struct 结构体名 { 结构体成员列表 };int age;在定义结构体本身的同时,可以顺便定义并初始化)一个结构体变量。这种方式比较简洁,适用于结构体定义和结构体变量的创建在同一行完成的情况。int age;} p4,p5,p6;//顺便创建变量int age;//顺便创建变量并初始化。原创 2023-07-25 09:29:31 · 148 阅读 · 0 评论 -
Day7 C++ 指针
数据类型 * 变量名;// 声明一个整数变量int* ptr;ptr = #// 将num的地址赋值给指针ptr// 声明一个整数变量int* ptr = # // 将num的地址赋值给指针ptr。原创 2023-07-24 10:53:01 · 77 阅读 · 0 评论 -
Day 6 C++ 函数
在C++中,函数的定义通常包括函数返回类型、函数名、参数列表和函数体。// 函数声明返回类型 函数名(参数列表);// 函数定义返回类型 函数名(参数列表) {// 函数体// 执行具体的代码逻辑// 可以使用参数进行计算并返回结果return 结果;返回类型:指定函数执行完毕后的返回值类型,可以是基本数据类型(如int、float、bool等)、自定义类型或void(表示无返回值)。函数名:用于唯一标识一个函数,在调用函数时需要使用该名称。原创 2023-07-23 08:49:43 · 79 阅读 · 0 评论 -
Day5 C++ 数组
数据类型> []; [] = {, , ...}; [SIZE];#include std::array ;无论哪种定义方式,都需要指定数组的数据类型和大小。在定义数组后,可以使用索引运算符[]来访问和修改数组中的元素。需要注意的是,数组的索引从 0开始,所以第一个元素的索引是 0,第二个元素的索引是 1,以此类推。当访问或修改超出数组边界的索引时。原创 2023-07-22 10:45:27 · 63 阅读 · 0 评论 -
Day 3 C++ 运算符
注意:两个整数相除结果依然是整数,只有整型变量可以进行取模运算除数不可以为0,取模运算时,除数也不能为0两个小数可以相除,不可以取模前置递增/减先对变量进行++/--,再计算表达式,后置递增相反。原创 2023-07-20 09:53:49 · 47 阅读 · 0 评论 -
Day4 C++ 程序运行结构
C/C++支持最基本的三种程序运行结构:==顺序结构、选择结构、循环结构==顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码。原创 2023-07-21 11:23:09 · 68 阅读 · 0 评论 -
Day2 C++ 数据类型
C++ 的数据类型。原创 2023-07-19 10:13:56 · 92 阅读 · 0 评论 -
Day1 C++入门:初识c++
c++入门:初识c++原创 2023-07-18 10:15:03 · 84 阅读 · 0 评论