
C++
文章平均质量分 68
C++知识点的学习与简单运用
青青草原风
学习记录,笔记自用
展开
-
【C++中的STL】常用算法5——常用集合算法
1、求两个容器的交集2、set_union求两个容器的并集3、求两个容器的差集。原创 2024-01-30 13:30:33 · 481 阅读 · 0 评论 -
【C++中的STL】常用算法3——常用拷贝和替换算法
1、copy容器内指定范围的元素拷贝到另一个容器中2、replace将容器内指定的旧元素修改为新元素3、replace_if容器内指定范围满足条件的元素替换为新元素4、swap互换两个容器的元素。原创 2024-01-28 14:43:28 · 467 阅读 · 0 评论 -
【C++中的STL】常用算法2——排序算法
1、sort对容器内元素进行排序2、洗牌,指定范围内的元素随机调整次序3、merge容器元素合并,并存储到另一个容器中4、reverse反转指定范围的元素。原创 2024-01-28 14:42:45 · 722 阅读 · 0 评论 -
【C++中的STL】常用算法1——遍历算法和查找算法
按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置,beg开始迭代器,end结束迭代器,_Pred函数或者谓词(返回bool类型的仿函数)按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置,beg开始迭代器,end结束迭代器,value查找的元素。遍历算法,遍历容器元素,beg开始迭代器,end结束迭代器,_func函数或者函数对象。查找相邻重复元素,返回相邻元素的第一个位置的迭代器,beg开始迭代器,end结束迭代器。,beg开始迭代器,end结束迭代器,value查找的元素。原创 2024-01-27 17:17:32 · 660 阅读 · 0 评论 -
【C++中的STL】函数对象
函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。函数对象超出普通函数的概念,函数对象可以有自己的状态,函数对象可以作为参数传递。返回bool类型的仿函数称为谓词,如果operator()接受一个参数,叫做一元谓词;,这些仿函数所产生的对象,用法和一般函数完全相同,使用内建函数对象,需要引入头文件**#include**重载函数调用操作符的类,其对象常称为函数对象,函数对象使用重载的()时。行为类似函数调用,也叫仿函数。函数对象(仿函数)是一个类,不是一个函数。原创 2024-01-27 16:46:42 · 505 阅读 · 0 评论 -
【C++中STL】map/multimap容器
底层结构是用而二叉树实现。map和multimap的区别是map不允许容器中有重复key值元素;multimap允许容器中有重复key值元素。查找key是否存在,若存在,返回该键的元素的迭代器,若不存在,返回set.end(),所有元素都会根据元素的键值自动排序。利用仿函数改变排序规则,默认升序从小到大。删除迭代器从beg到end之间的元素,返回下一个数据的位置。删除pos位置的元素,返回下一个数据的位置。删除容器中值为key的元素。map中的所有元素都是。返回容器中元素的个数。统计key的元素个数。原创 2024-01-26 22:53:21 · 457 阅读 · 0 评论 -
【C++中STL】set/multiset容器
在使用仿函数排序时,需要加const不可修改,不然会报错,set的排序规则下定义是需要设置好,默认是升序。查找key是否存在,若存在,返回该键的元素的迭代器,若不存在,返回set.end()set不允许容器中有重复的元素,multiset允许容器中有重复的元素。删除迭代器从beg到end之间的元素,返回下一个数据的位置。2、set插入数据的同时会返回插入结果,表示插入成功。1、set不可以插入重复数据,multiset可以。删除pos位置的元素,返回下一个数据的位置。返回容器中元素的个数。原创 2024-01-26 22:52:43 · 590 阅读 · 0 评论 -
【C++中STL】list链表
重新指定容器的长度为num,若容器变长,则以elem值填充新位置;重新指定容器的长度为num,若容器变长,则以默认值0填充新位置;在链表中在任意位置插入和删除元素不会造成原有list迭代器的失效,这个在vector中不成立。的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,链表是由一系列。删除迭代器从start到end之间的元素,返回下一个数据的位置。迭代器指向位置pos插入元素ele的拷贝,返回新数据的位置。更深层次的理解可以看看数据结构中的链表。删除pos位置的元素,返回下一个数据的位置。原创 2024-01-26 21:59:17 · 2354 阅读 · 0 评论 -
【C++中STL】stack和queue容器
队列容器允许从一个口入队push新增元素,从另一个口出队pop移除元素。栈中只有顶端的元素可以被外界使用,因此栈不允许由遍历行为。可以判断是否为空empty(),和统计个数size();采用模块类实现,stack对象的默认构造形式。只有队头和队尾能被外界访问,不允许有遍历行为。采用模块类实现,queue对象的默认构造形式。的数据结构,它只有一个出口。的数据结构,有两个出口。从栈顶移除第一个元素。从队头移除第一个元素。原创 2024-01-26 16:16:45 · 510 阅读 · 0 评论 -
【C++】STL和vector容器
质变算法,是指运算过程中会更改区间内的元素的内容,例如拷贝、替换、删除等;长久以来,软件届一直希望建立一种可重复利用的东西,C++的面向对象和泛型编程思想,目的就是复用性的提升,大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作,为了建立数据结构和算法的一套标准,诞生了STL。容器和算法之间的粘合剂,提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式,每个容器都有自己专属的迭代器,迭代器使用非常类似于指针,初学阶段可以理解为指针。原创 2024-01-25 15:14:09 · 2211 阅读 · 0 评论 -
【C++】模板(泛型编程)
将声明和实现写在同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制。利用具体化的模板,可以解决自定义类型的通用化,学习模板并不是为了写模板,而是再STL能够运用系统提供的模板。建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。1、当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型。建立一个通用类,类中的成员 数据类型可以不具体制定,用虚拟的类型来表示。模板不可以直接使用,它只是一个框架,模板的通用不是万能的。原创 2024-01-22 17:46:23 · 641 阅读 · 0 评论 -
【C++】文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化,C++中对文件操作需要包含文件<fstream>原创 2024-01-20 23:49:59 · 805 阅读 · 0 评论 -
【C++类与对象】继承
3、当子类中出现和父类同名的成员函数,子类的同名成员函数会隐藏掉父类中所有同名成员函数(包括重载的),如果想访问到需要加作用域。父类中所有的非静态成员属性都会被子类继承,父类中私有的成员属性被编译器隐藏不可访问但被继承。可能会引发父类中同名,不明确出现二义性,可以使用作用于访问父类中的同名。子类继承父类后,当创建子类对象,也会调用父类的构造函数。先构造父类,再构造子类,析构的顺序与构造的顺序相反。2、访问父类同名成员,需要加载作用域(1、访问子类同名成员,直接访问即可。子类也成为派生类,父类成为基类。原创 2024-01-20 21:14:03 · 569 阅读 · 0 评论 -
【C++】友元
在程序里,有些私有属性想让类外一些函数或者类进行访问,就需要用到友元的技术,友元的目的就是让一个函数或者类访问另一个类中私有成员。friend。原创 2024-01-17 12:20:49 · 694 阅读 · 0 评论 -
C语言中const与指针
一个指针变量可以操作两个存储单元的值,一是地址值,即指针变量自己的值,改变地址值,就可以改变指针的指向。二是指针变量指向的存储空间的值,也就是通过对指针进行间接访问得到的值。在指针类型的形参前加上const修饰,目的就是只运行函数读取该指针指向的内容而不修改其内容。定义指针时根据const的位置可以得到不同常值:常指针、指向常量的指针、指向常量的常指针。(1)常指针表示指针值在经过初始化之后不允许修改的指针。语法:基类型名 *const 指针名=地址值;int a=10,b=20;int *原创 2021-11-29 11:11:14 · 2291 阅读 · 0 评论 -
C语言动态内存分配库函数
动态内存有4个函数:malloc、calloc、realloc,freec++中使用new,deletevoid *malloc(size_t,size);参数是内存块的字节数大小,数据类型是unsigned int(不能为负数,可以是0或一个正数)返回一个void指针,指向分配给我们的内存块的第一个字节的地址malloc函数未进行填值是为随机值void *p=malloc(10*sizeof(int));表示总共需要的字节数是:单元数*每个单元的字节数malloc是一个通用函数,在堆上原创 2021-11-29 11:13:04 · 924 阅读 · 0 评论 -
C语言和C++字符串的区别
可以直接赋值,但当需要使用puts()输出时,需要加上’\0’,表示该字符串结束,'\0’占用一个字符位。原创 2023-12-19 15:41:31 · 1028 阅读 · 2 评论 -
【C++】函数
函数的参数列表中的形参可以有默认值。传值就用传入的值,没有传入值就用默认值。注意:1)如果某个位置已经有默认参数,那么从这个位置往后,从左到右都必须有默认值。2)如果函数声明有默认参数,函数实现就不能有默认参数。(二义性)声明和实现只能有一个有默认参数值。原创 2024-01-15 21:16:48 · 357 阅读 · 0 评论 -
【C++标准模板库】algorithm头文件下的常用函数
顾名思义,注意max()和min()的参数必须是两个。abs()的参数是一个,但必须是整数,浮点数的绝对值用math头文件下的fabs。原创 2023-12-30 21:34:53 · 1217 阅读 · 1 评论 -
【C++标准模板库】一些函数的用法(vector、set、map)
变长数组”,相当于一维数组,长度根据需要而自动改变的数组。(大部分STL都是这样定义)在头文件下方要添加(都要加)typename也是一个STL容器,可以是任何的基本类型。1、在vector后面加上一个元素x,时间复杂度:O(1);2、删除vector的尾元素,时间复杂度:O(1);1、,vector本身可以作为数组使用,在一些元素个数不确定的场合可以很好的节省空间。有些场合需要根据一些条件把部分数据输出在同一行,数据中间用空格隔开。原创 2023-12-26 15:12:37 · 1258 阅读 · 1 评论 -
指针知识详解1
指针:指针地址或指针变量指针的意义:1.指针类型决定了:(1)指针解引用的权限有多大(能操作多少数);(2)指针+1或-1的步长为多少#include <stdio.h>int main(){ int* p; int a[5] = { 1,2,3,4,5 }; char* p1; p1 = a; p = a; printf("%p\n", p); printf("%p\n", p + 1); printf("%p\n", p1); printf("%p\n", p1原创 2021-12-05 20:36:03 · 614 阅读 · 0 评论 -
【C++标准模板库】队列、栈和pair常见用法
i <= 5;= true) {cout << "st的栈顶元素:"<<st.top() << endl;cout << "st的元素个数:" << st.size() << endl;//栈顶元素出栈st.pop();cout << "st出栈后的栈顶元素:" << st.top() << endl;cout << "st出栈后的元素个数:" << st.size() << endl;原创 2023-12-26 21:39:29 · 1105 阅读 · 1 评论 -
数据的存储
一、数据在内存中以二进制的形式存储(1)对于整数来说整数二进制有三种形式表示:原码、反码、补码。正整数:原码,反码,补码相同负整数:原码,反码,补码不同,需要计算按照数据的数值直接写出的二进制序列就是原码;原码的符号位不变,其他位按位取反,得到的就是反码;反码+1,得到补码。整数在内存中存储的是补码。CPU只有加法器。...原创 2021-12-05 20:35:41 · 173 阅读 · 0 评论 -
【C++】引用
别名和原名使用同一块地址空间。必须初始化,一旦初始化后不能更改。可以赋值。相当于a,b,c指向的同一块内存。原创 2024-01-15 19:05:42 · 519 阅读 · 0 评论