C++入门之战
此专栏参考了“21天精通C++”这本书,此部分博客是本书激发了我对于C++的热爱,致使我入门C++。C++是我觉得世界上独一无二的语言,入门C++将使你获益终生。
肥肥胖胖是太阳
我的人生格言:不积跬步无以至千里。
展开
-
多态中的限定符override与final的使用
多态中的限定符override与final的使用#include <iostream>using namespace std;class Member_A final // 不可以被作为基类被继承{};class Member_B{ virtual void ShowInf() // 如果在成员函数后面添加final,可以用于避免子类中同名函数被覆盖 { cout << "Member_B" << endl; }};class Mem原创 2020-08-31 20:33:09 · 144 阅读 · 0 评论 -
父类为形参,子类为实参时的注意事项
父类为形参,子类为实参时的注意事项采用直接值传递代码示例#include<iostream>usingnamespacestd;classFish{public:virtualvoidShowInf(){cout<<"我是一条fish"<<endl;}};classCarp:publicFish{publi...原创 2020-08-31 19:55:20 · 3988 阅读 · 0 评论 -
异常处理的几个常见问题
目录异常处理的常见问题异常处理到底是干什么用的?异常处理如何使用?如果异常被抛出,是否还会向下继续执行?示例代码运行结果结果解析如果异常被抛出,如何处理其所在作用域内的成员变量?代码示例运行结果结果解析综上所述,异常处理执行流程是什么?如何传递自定义异常?如何通过继承进行自定义异常处理?异常处理的常见问题异常处理到底是干什么用的?其实异常处理使用try-catch语句以及exception异常处理标志来实现的,try用于捕获异常,ca.原创 2020-08-30 16:19:45 · 595 阅读 · 0 评论 -
使用流进行特定格式的输入输出
使用流进行输入输出常用的流控制符使用std::cout将指定格式的数据写入控制台//使用流进行输入输出.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>#include<iomanip>usingnamespacestd;intmain(){//指定数据输出格式doublevar1=3.1415926;...原创 2020-08-28 09:24:53 · 312 阅读 · 0 评论 -
智能指针中几种常见的指针实例解析
目录额外知识点常用的提示性宏定义符智能指针智能指针的基本原理模拟普通指针的成员访问功能模拟普通指针的解引用功能模拟内存的自动释放与地址的拷贝智能指针的分类深复制与浅复制深复制的两种用途拷贝避免内存重复释放避免传参时的切除问题出现切除问题的程序程序问题说明解决切除问题的程序只发生了小小的变化为什么传入指针比直接将值拷贝到形参中要好呢?父类指针为何通常作为函数形参使用?破坏性复制破坏性复制智能指针的基本实现原理破坏性指针应用时应原创 2020-08-24 11:11:18 · 1363 阅读 · 0 评论 -
STL位标志的使用
目录STL位标志的使用Bitset注意事项Bitset的STL算法Bitset部分:代码示例部分一部分二Bitset部分:结果显示Bitset与vector的异同点Vector部分:代码示例Vector部分:结果显示STL位标志的使用Bitset注意事项位可以存储两种状态:要么是已设置(1),要么是重置(0)。Bitset的STL算法Bitset部分:代码示例部分一#include<iostream&g...原创 2020-08-23 13:40:59 · 396 阅读 · 0 评论 -
“自适应容器:栈和队列”的实例应用
题目一:#include <iostream>#include <queue>#include <functional>using namespace std;enum Sex{ Women = 1, Men = 0,};struct Person { int TrueAge; char TrueSex; Sex sex; Person(int TrueAge, char TrueSex) { this->Tr...原创 2020-08-23 09:19:42 · 111 阅读 · 0 评论 -
“自适应容器:栈和队列”详解
目录自适应容器:栈和队列STL算法能用于栈和队列吗?什么样的容器才适合作stack和queue的底层容器?Queue队列的底层容器Priority_queue优先级队列的底层容器Stack栈的底层容器栈的实质栈的实例化函数的使用emplace()与push()的区别其他函数的用法队列的实质队列的实例化函数的使用运行结果关联容器与顺序容器的一大不同Priority_queue与queue的区别Priority_queue实例化函数的使原创 2020-08-22 19:50:09 · 549 阅读 · 0 评论 -
浅谈顺序容器与关联容器的区别
顺序容器和关联容器图示:1.顺序容器和关联容器的区别:①顺序容器只有实值val。②关联容器的一个元素包含两个部分:键值对(key-value) 即<k值(键值)|实值>。③顺序容器不涉及排序,关联容器内部自动排序。④本质区别:顺序容器通过元素在容器中的位置顺序存储和访问元素,而关联容器则是通过键(key)存储和读取元素的。2.关联容器中的 有序容器和无序容器的区别:①有序容器(底层结构是:红黑树)(1)map;//key不允许重复(2)multima.转载 2020-08-16 09:36:14 · 2010 阅读 · 0 评论 -
使用STLS算法时需要注意的事项
问:诸如std::transform( )等变序算法能否用于关联容器(如std::set)?答:即使可以,也不应这样做。应将关联容器的内容视为常量,这是因为关联容器在插入元素时进行排序,因此元素的相对位置不仅对find( )等函数来说很重要,对容器的效率也很重要。因此,不应将诸如std::transform( )等变序算法用于STL set。问:要将顺序容器的每个元素都设置为特定的值,可使用std::transform( )吗?答:虽然可以使用std::transform( ),但使用fill( )或.原创 2020-08-16 08:52:29 · 676 阅读 · 0 评论 -
常用STL算法示例
目录常用STL算法算法简介非变序算法变序算法算法示例计数算法搜索算法:Search()搜索算法:Search_n()搜索算法:Find_first_of()函数搜索算法:Adjacent_find()比较算法:Equal()比较算法:equal_range()比较算法:mismatch()比较算法:Lexicographical_compare()初始化算法:fill()初始化算法:fill_n()初始化算法:generate()&原创 2020-08-16 08:28:32 · 1168 阅读 · 0 评论 -
Lambda表达式的实质与应用
目录Lambda表达式lambda表达式的基本构造Lambda表达式的本质解析lambda表达式各部分的含义捕获列表[ ]形参列表( )mutable声明Exception异常处理 -> 指定函数返回值类型函数体{ }特别注意:lambda函数返回的函数句柄lambda函数实现一元谓词Lambda函数实现二元谓词在transform函数中使用Lambda函数Lambda表达式lambda表达式的基本构造Lambda表达式的..原创 2020-08-13 18:22:34 · 535 阅读 · 0 评论 -
algorithm中常用的STL处理函数
目录STL操作的灵魂——函数对象“函数对象”是什么?那又有疑问了:为什么把operator()放进struct中呢?这里为什么要进行“ObjectDisplayData=for_each()”变量之间的赋值?“谓词”是什么?我们为什么要使用algorithm库对容器进行操作?一元谓词的使用查找第一个偶数元素并且输出显示遍历输出全部的偶数元素几个常用的一元谓词元素分组函数partition()元素分组函数stable_partition()在模板类中定义..原创 2020-08-12 11:04:35 · 293 阅读 · 0 评论 -
Map容器中几种常用的基本操作
目录Map容器的基本操作Map是什么?自定义数据类型作为”键”并且进行自定义排序根据上面的例子说明“如何进行自定义排序”?无论是哪种容器,自定义数据类型应该注意什么?Map容器的初始化Map容器中元素的插入Multimap容器中首个不重复的“键”查找Map和multimap容器中compare函数句柄的使用Map容器的最大容量(map容器最多可以装多少元素)map容器中元素的删除操作Map容器中的find函数Multimap中查找有多少个重复值的count原创 2020-08-08 17:58:05 · 3038 阅读 · 0 评论 -
重载==时一定要特别注意的隐藏错误
代码示例#include <iostream>#include <vector>#include <sstream>#include <string>using namespace std;struct Student{ string name; int StudNumber; string OutputString; Student(string name, int St.原创 2020-08-07 15:44:41 · 121 阅读 · 0 评论 -
自定义数据类型在容器中的正确操作形式
目录自定义数据类型在容器中的正确操作形式在一些情况下自定义数据类型变量一定要声明为const类型的将自定义数据类型声明为const类型的情况代码示例输出错误显示疑问解答错因分析解决方法综合代码示例同样适用于vector数组基本数据类型也不例外很难发现的原因代码示例结果显示自定义数据类型在容器中的正确操作形式在一些情况下自定义数据类型变量一定要声明为const类型的将自定义数据类型声明为const类型的情况① 重载运算符的形参;② 默原创 2020-08-06 18:01:01 · 524 阅读 · 0 评论 -
set和multiset小练习
// set容器小练习.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。// 题目://1.设置一个电话簿应用程序,使其能够根据电话号码查找人名(提示:调整运算符 < 和 == ,确保根据电话号码对元素进行比较和排序)。//2.定义一个multiset来存储单词及其含义,即将multiset用作词典(提示:multiset存储的对象应是一个包含两个字符串的结构,其中一个字符串为单词,另一个字符串是单词的含义)。#include <iostream>#i.原创 2020-08-06 15:54:01 · 201 阅读 · 0 评论 -
C++ set与unordered_set区别
C++ set与unordered_set区别哈希表会破环数组有序性set与map底层实现是平衡二分搜索树,unordered_set与unordered_map底层实现是哈希表转载 2020-08-05 21:57:22 · 643 阅读 · 0 评论 -
Set和multiset容器中常用函数的使用
目录Set和multiset容器的使用动态分配空间函数get_allocator()函数代码示例运行结果代码示例结果显示查看能申请到的最大空间函数max_size()函数代码示例结果显示返回第一个或者最后一个指定元素代码示例结果显示Key_comp()与value_comp()函数的区别代码示例元素个数查询函数count()寻找相同元素段函数equal_range()功能简介代码示例自定义排序方式Set和multiset容器的使原创 2020-08-05 11:36:27 · 626 阅读 · 0 评论 -
List列表的使用
目录List列表的使用List链表的特点为什么时间固定呢?List初始化方式List容器的插入/删除操作List容器的个性化排序与特定元素的移除&个性化用find()函数查找某一个对象的索引不同容器间的赋值函数assign()删除自定义的重复数据函数unique()自定义合并排序函数Marge()单纯的合并函数splice()List列表的使用List链表的特点链表是一系列节点,其中每个节点除包含对象或值外还指向下一个节点,即每个节点都链接到下原创 2020-08-04 09:46:56 · 648 阅读 · 0 评论 -
vector和deque的小练习
题目要求1.编写一个交互式程序,它接受用户输入的整数并将其存储到vector中。用户应能够随时使用索引查询vector中存储的值。2.对练习1中的程序进行扩展,使其能够告诉用户他查询的值是否在vector中。3.Jack在eBay销售广口瓶。为了帮助他打包和发货,请编写一个程序,让他能够输入每件商品的尺寸,将其存储在vector中再显示到屏幕上。4.编写一个应用程序,将一个队列初始化为包含以下3个字符串:Hello、Containers are cool!和C++ is evolving!,并..原创 2020-08-03 18:14:44 · 301 阅读 · 0 评论 -
Vector动态数组复习
目录Vector动态数组复习Vector的特点Vector数组与new动态申请内存的不同之处Vector的size与capacity的区别概念区分Capacity概念的适用范围代码示例Capacity与size通常搭配使用提高代码运行效率Vector数组初始化初始化的方式代码示例指定位置插入/删除元素操作方式代码示例分清begin()与end()迭代器返回值指向何处正反向遍历动态数组代码示例Cbegin()&cend()与beg原创 2020-08-03 09:42:26 · 185 阅读 · 0 评论 -
string类常用函数的应用大全
// string类的实操.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <string>using namespace std;int main(){ // 初始化 string str1 = "666999sajkskasj"; // 拷贝构造函数赋值 string str2(str1); // 构造函数赋值 string str3(str1.begin(), str1.原创 2020-08-02 18:29:24 · 226 阅读 · 0 评论 -
string小练习
// string类的操作.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。// 题目://1.编写一个程序检查用户输入的单词是否为回文。例如,ATOYOTA是回文,因为该单词反转后与原来相同。//2.编写一个程序,告诉用户输入的句子包含多少个元音字母。//3.将字符串的字符交替地转换为大写。//4.编写一个程序,将4个string对象分别初始化为I、Love、STL和String,然后在这些字符串之间添加空格,再显示整个句子。//5.编写一个程序,显示字符串Good .原创 2020-07-30 16:33:16 · 184 阅读 · 1 评论 -
String类与wstring类的区别
String类与wstring类的区别本质区别存储字符的区别#include<iostream>#include<string>usingnamespacestd;intmain(){wstringwstr1=L"你好世界";//L+普通字符串=宽字符串constwchar_t*ch1=wstr1.c_str();//转化为宽字符类型的指针//s...原创 2020-07-30 15:09:24 · 2560 阅读 · 1 评论 -
初始STL容器&简单理论简介
目录STL容器简介什么是容器?容器中的迭代器的作用官方解释大白话解释“解引用”是什么意思?容器的分类为什么要选择容器类型?STL容器简介什么是容器?容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型。容器中的迭代器的作用官方解释STL中的迭代器是模板类,从某种程度上说,它们是泛型指针。这些模板类让程序员能够对STL容器进行操作。注意,操作也可以是以模板函数的方式提供的STL算法,迭代器是一座桥梁,让这些模板函数能够以一致而无.原创 2020-07-30 09:09:11 · 354 阅读 · 0 评论 -
String类的使用进阶
目录String类的使用进阶String类对象求子串的操作String类对象的查找操作Find函数调用格式代码示例String类中字符串的替换Replace函数调用格式代码示例String类中字符串的插入Insert函数的应用代码示例String类中字符段的擦除Erase函数的调用格式代码示例小练习题目代码示例String类的使用进阶String类对象求子串的操作#include<iostream>#in...原创 2020-07-28 10:12:35 · 301 阅读 · 0 评论 -
string类的使用基本技巧
目录String类的巧用String类对象的初始化String类对象返回C风格的字符数组指针String类对象中单个字符的访问String类对象的长度计算String类对象是否为空String类对象的赋值操作成员函数调用格式代码示例String类对象的增补操作成员函数调用格式代码示例String类对象的比较操作String类的巧用String类对象的初始化#include<iostream>#include<st...原创 2020-07-27 18:48:10 · 158 阅读 · 0 评论 -
C++容器之映射map的基本操作
目录C++容器之映射mapMap容器在内存中存在的形式为什么用map容器?Map容器的基本操作Map的常用成员函数函数列表反向迭代器rbegin()与rend()的使用迭代器begin()与end()的使用find()查找函数与swap()交换函数的使用插入函数insert()的使用C++容器之映射mapMap容器在内存中存在的形式如上图:第一个值称之为关键字(key),每个关键字只能在map中出现一次,是唯一的;第二个称之为该关键字的对应..原创 2020-07-27 16:52:09 · 681 阅读 · 0 评论 -
容器之链表list的特点说明以及基础函数应用
目录容器之链表list容器list相比于容器vector的优缺点存储内存连续性不同遍历数组的方式不同插入/擦去元素的效率不同迭代器本质不同容器list的相关操作插入元素擦去元素倒序排列函数reverse拷贝函数assign内存空间改变函数容器之链表list容器list相比于容器vector的优缺点存储内存连续性不同List容器存储空间不连续,不可以联系的访问数组的元素,但是vector存储空间是连续分布的,可以连续的通过下标访问数组元素。.原创 2020-07-26 09:09:37 · 488 阅读 · 0 评论 -
vector动态数组的基本操作
目录Vector动态数组的操作在数组中插入元素代码示例运行结果输出开始和结尾的元素代码示例运行结果在数组中删除元素代码示例运行结果清空数组&数组元素互换&判断数组是否为空程序示例运行结果小练习题目要求代码示例Vector动态数组的操作在数组中插入元素代码示例#include<iostream>#include<vector>usingnamespacestd;...原创 2020-07-25 17:45:34 · 537 阅读 · 0 评论 -
Vector动态数组的创建以及初始化
Vector动态数组的创建以及初始化Vector动态数组的特点① vector动态数组本质上也是数组,它是根据自己不断变化的元素个数,不断寻找适合自己的连续的存储空间,切记:vector动态数组的存储空间与静态数组相同是在内存中连续分布的;② vector动态数组可以从数组尾部不断插入新的元素,只能从尾部插入;③ vector动态数组不止长度在变化,它在内存中的位置也在发生变化,由于需要寻找适合存储自己的连续的内存区域,因此vector数组操作大量元素时效率有点低下;④ vector动态原创 2020-07-25 15:11:19 · 1234 阅读 · 0 评论 -
文件的IO操作之文件指针
文件的IO操作之文件指针文件指针介绍这里面说的文件指针也可以理解为文件内部记录读取或者写入的当前位置,不然程序如何知道下一次该从文件的什么位置开始读取或者写入呢?在读写文件的时候,每读取或者写入一个字节,磁盘中的文件指针就会向后移动一个字节。可以通过控制指针的位置,以便在我们需要的位置进行读写文件。文件流提供以下成员函数来读取或配置文件指针:tellg() 返回读取文件指针的当前位置tellp() 返回写入文件指针的当前位置seekg(指针偏移量)...原创 2020-07-25 08:51:05 · 813 阅读 · 0 评论 -
文件的基本IO操作
文件的IO操作//文件的IO操作之读写.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>#include<fstream>#include<string>usingnamespacestd;intmain(){ofstreamFileWrite("C:\\Users\\hgq15\\Desktop\\File.txt"...原创 2020-07-24 20:23:09 · 199 阅读 · 0 评论 -
用最简洁的代码弄懂类模板的继承
一定要注意格式!// 类模板的继承.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <string>using namespace std;template <typename Type1, typename Type2>class Cperson{private: Type1 name; Type2 sex;public: Cperson(Type1 .原创 2020-07-23 16:12:39 · 110 阅读 · 0 评论 -
类的组合的构造函数
// 类内声明另一个类的对象初始化方法(类的组合初始化方法).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <string>using namespace std;class Cstudent{private: string name; int StudNumber;public: Cstudent(string name, int StudNumber...原创 2020-07-23 15:47:37 · 491 阅读 · 0 评论 -
探索拥有不同数量和类型的参数的函数调用的实质
每日练习程序说明://拥有不同数量和类型的参数的函数调用.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>usingnamespacestd;template<typenameType1,typenameType2>voidSum(Type1&solution,Type2add1)//累加的基础就是两个数相加{s...原创 2020-07-23 15:20:32 · 132 阅读 · 0 评论 -
用例子说明sizeof在应用时的注意事项
C++日常练习错误示例://课后习题14.5.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//题目://编写一个简单的模板类,它存储两个数组,数组的类型是通过模板参数列表指定的。数组包含10个元素,模板类应包含存取器函数,可用于操作数组元素。#include<iostream>#include<tuple>#include<string>usingnamespacestd;...原创 2020-07-23 14:45:54 · 167 阅读 · 0 评论 -
static_assert与assert 两者的异同点
目录static_assert与assert两者的异同点为什么我这里说“static_assert主要在编译时期起作用”?(static_assert)当我们在编译阶段就满足了报错要求,会如何呢?(assert) 当我们在运行阶段就满足了报错要求,会如何呢?Static_assert相较于assert的优势Static_assert在实例中的常用形式static_assert与assert两者的异同点形同的是两者均为“用于断言的宏操作”,但是static_ass.原创 2020-07-22 21:00:51 · 894 阅读 · 0 评论 -
万能存储器:C++中的元胞数组的基本操作
目录万能存储器:C++中的元胞数组什么是元胞数组?元胞数组怎么用?代码示例Decltype是什么?该如何使用?Tuple_cat是什么?该如何使用?Tuple_size是什么?如何使用?Tuple_element什么作用?如何使用?注:size_t的使用万能存储器:C++中的元胞数组什么是元胞数组?元胞数组英文名字为“tuple”,他是个数据类型,但不是基本的数据类型,它更像是一个包含有各种数据类型的大杂烩,元胞数组本质上也是数组,但是它颠覆了数组的普遍.原创 2020-07-22 20:19:32 · 2288 阅读 · 0 评论