C++
文章平均质量分 55
菜鸟的人工智能之路
菜鸟的AI进阶道路
展开
-
栈实现DFS算法
DFS是搜索算法中非常常见的一种算法,通常实现的时候会通过递归调用的方式来实现,但是众所周知,当递归深度很深时可能会出现爆栈的情况。针对上述可能出现的问题,这里通过栈来实现DFS操作。...原创 2022-08-01 22:57:33 · 1925 阅读 · 0 评论 -
C++ | string对象的构建与应用实例
利用C++面向对象的各种特性创建字符串处理类string。原创 2022-02-27 21:27:11 · 393 阅读 · 0 评论 -
C++ | 代码重用 | 私有继承
C++的私有继承。原创 2022-01-25 07:35:25 · 392 阅读 · 0 评论 -
C++ | 代码重用 | 包含对象
模板对象意味着声明对象时,必须指定具体的数据类型。valarry 类:用于处理数值。operator[]() 访问各个元素 size() sum() max() min()通常用于has-a关系的C++技术是组合(包含),也就是创建一个包含其他对象的类。(换言之就是在类里面包含了其他类作为成员对象)接口和实现使用公有继承时,类可以继承接口,可能还有实现(基类的纯虚函数提供接口,但不提供实现)。获得接口是 is-a 关系的组成部分。使用组合,类可以获得实现,但不能获得接口。..原创 2022-01-16 08:35:18 · 293 阅读 · 0 评论 -
C++ | 函数重载 / 模板 / 引用传参等
1 C++内联函数内联函数是C++为提高程序运行速度做的改进。与常规函数的区别在于C++编译器如何将他们组合到程序中。函数定义前加 Inline。编译器将使用响应的函数代码替换函数调用,对于内联代码程序无需跳转到另一个位置执行代码。相比较而言提高了代码运行速度,但是需要占用更多的内存(若程序在多个不同的地方调用同一个内联函数,则该程序将包含该内联函数的多个副本)。内联函数通常省略原型,将整个定义(函数头和所有函数代码)放在原型的地方。内联函数优于C 语言中的宏定义 #define,C+.原创 2021-11-30 22:37:51 · 149 阅读 · 0 评论 -
C++ | 函数-程序模块
阐述C++的函数及相应的知识点。指针和引用。函数返回值。函数和数组。原创 2021-11-30 21:09:47 · 1088 阅读 · 0 评论 -
C++ | 字符函数库 cctype
C++的字符函数库 cctype 介绍。原创 2021-11-25 21:22:24 · 512 阅读 · 0 评论 -
C++ | 简单文件输入/输出
结合实例详细介绍C++里面关于文本文件的写入/读取操作,同时讲述在实际应用中的一些注意事项。原创 2021-11-24 22:34:43 · 1936 阅读 · 0 评论 -
C++| 对象和类
1 C++的类1.1 访问控制数据隐藏(数据放在私有部分)是一种封装,实现细节隐藏其中。 类定义和类声明放在不同的文件中。 类的公有接口和实现细节分开。 数据项放在私有部分,组成类接口的成员函数放在公有部分。成员函数(非接口)也可以放在私有部分。1.2 类成员函数定义成员函数时用域解析运算符(::)标识函数所属的类。 限定名(qualified name)<利用域解析运算符,包含类名>和非限定名(unqualified name),非限定名只能在类的作用域中使用。(1原创 2021-10-08 21:04:57 · 54 阅读 · 0 评论 -
C++11 新特性
目录1 常用特性1.1 新类型1.2 初始化(1)初始化列表(2)防止缩窄转换(3)std::initializer_list1 常用特性1.1 新类型整形long long unsigned long long字符型char16_t 支持16位字符表示 char32_t 支持32位字符表示1.2 初始化(1)初始化列表扩大了使用 { } 初始化列表的应用范围,可以用于所有内置类型和用户定义的类型。short wor...原创 2021-10-06 22:37:48 · 209 阅读 · 0 评论 -
C++ 标准模板类
文档目录1 标准模板库2 泛型编程1 标准模板库STL提供了表示容器、迭代器、函数对象和算法的模板。容器:类似数组存储若干值,切实同质的; 迭代器:遍历容器的对象,类似遍历数组的指针,广义指针; 算法:完成特定的任务; 函数对象:类对象或函数指针。模板类 vectorerase() 删除矢量中给定区间元素。接受两个迭代器参数(该参数定义了要删除的区间),迭代器1指向区间起始处,迭代器2指向区间终止处的后一个位置。// delete first and second el原创 2021-09-13 23:58:33 · 175 阅读 · 0 评论 -
C++ | STL (Standard Template Library)
1 STL定义STL实现数据结构和算法的分离;STL基于模板而不是面向对象。STL中体现了泛型化程序设计的思想,引入了诸如需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。2 STL组件介绍容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。迭代器(Iterator),提原创 2021-08-30 21:12:35 · 108 阅读 · 0 评论 -
C++| 引用 重载 对象初始化
1 引用引用就是给一个变量取“别名”,这也就意味着引用值(别名)改变的话,原值必然也跟随改变。引用的本质是指针常量(编译器内部会自动完成指针操作)。int a = 15;//自动转换为 int* const ref = &a//指针常量的指向不会变化,印证了引用不可变的特性int& ref = a;1.1 常量引用常量引用主要用来修饰形参,防止误操作引用值,进而改变原始变量的值。//引用通常用来修饰形参//这里形参增加const之后,在该函数中v值不可发生原创 2021-08-27 23:27:45 · 94 阅读 · 0 评论 -
容器 - unordered_map
unordered_map是C++ Boost库中的内容,这里的unordered指的是散列式的存储方式。 unordered库提供了两个散列映射表,unordered_map和unordered_multimap。 利用散列表代替了二叉树的实现,模板参数中多了散列计算函数。 unordered_map和unordered_multimap查找速度是O(n)。unordered_map属于关联式容器,采用std::pair保存key-value形式的数据。用法与map一致。 特别的是,STL中的m原创 2021-08-16 23:38:08 · 422 阅读 · 1 评论 -
explicit
explicitexplicit关键字用来修饰类的构造函数。 被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。也就是当explicit修饰单参数的构造函数时只能依据构造函数的定义那样进行类型转换,不能使用隐式类型转换。 explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。 所有智能指针都有一个explicit类型的构造函数。//Smart pointers has a explicit construct原创 2021-08-08 21:59:17 · 234 阅读 · 0 评论 -
解析命令行参数 boost::program_options
声明:本文部分内容引自https://blog.csdn.net/morning_color/article/details/50241987,作者为:morning_color,在此感谢作者的分享。原创 2021-08-01 12:35:16 · 545 阅读 · 0 评论 -
程序内存分配和管理
栈区(stack):编译器自动分配与释放。存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。 堆区(heap):程序员自动分配(new或malloc),如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。 全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已初始化全局区(data)和未初始化全局区(bss)。 常量区(const):存放常量字符串,程序结束后有系统释放。 代码区(coding):存放函数体原创 2021-07-30 07:48:19 · 118 阅读 · 0 评论 -
C++11新特性总结学习
1 nullptr主要用来弥补NULL的不足,在早期的C++中,将数字0和NULL视为等效,进而在特殊情况出现混乱,特别是在重载中容易混淆。//if NULL as 0, fun(NULL) will invoke fun(int).class Example{ void fun(int); void fun(char *)}...原创 2021-07-27 23:11:45 · 1617 阅读 · 0 评论 -
函数生命期 (Updata later)
staticstatic声明静态局部变量会保持其值。#include<iostream>using namespace std;int fun() { static int cnt = 0; cnt++; return cnt;}int main() { for (int i = 0; i < 10; i++) cout << fun() << " "; return 0;}// Output: 1 2 3 4 5 6 7 8 9 1原创 2021-07-18 17:39:54 · 82 阅读 · 0 评论 -
C++ 异常处理
异常是程序运行中出现的不正常情况。 健壮性是在异常情况下系统生存的关键所在,计算机程序在输入错误、磁盘故障、网络过载或恶意攻击的情况下能否不死机、不崩溃,就是程序的健壮性。1 异常分类CPU异常在计算过程中,出现除数为0的情况的不正常现象。内存异常使用new或malloc申请动态内存但存储空间不够。 数组下标越界。 使用野指针、迷途指针读取内存。设备异常无法打开文件,或能够打开文件但文件有损坏,从而无法读取数据。 正在读取磁盘文件时挪动了文件或磁盘等。用户数据异常scan原创 2021-07-18 16:24:03 · 154 阅读 · 0 评论 -
容器 - list列表
//----迭代器iterators----iterator begin(); //迭代器指向第一个元素iterator end(); //迭代器指向最后一个元素后面的位置reverse_iterator rbegin(); //迭代器指向最后一个元素reverse_iterator rend(); //迭代器指向第一个元素前面的位置//----容量capacity----bool empty(); //测试是否为空表size_type size(); //返回列表长...原创 2021-07-17 08:47:13 · 78 阅读 · 0 评论 -
容器 - stack栈
栈是后进先出LIFO(last in first out)的线性表。 栈的表尾称为栈顶(top),表头称为栈底(bottom),不含元素的空表称为空栈。 栈定义在<stack>头文件中。栈类成员函数原型//----容量capacity---- bool empty(); //测试是否为空栈 size_type size(); //返回栈长度 //----元素存取element access---- top(); //返回栈顶元素 //----栈运算operatio原创 2021-07-17 00:25:35 · 88 阅读 · 0 评论 -
容器 - queue队列
队列(queue)是一种先进先出FIFO(first in first out)的线性表。 队列中,插入的一端称为队尾(back), 删除的一端称为队头(front)。 队列定义在<queue>头文件中。队列类成员函数//----容量capacity----bool empty(); //测试是否为空队列size_type size(); //返回队列长度//----元素存取element access----front(); //返回队头元素back();原创 2021-07-16 22:48:04 · 76 阅读 · 0 评论 -
容器 - vector
迭代器操作vector向量类成员函数//*****迭代器 iterators ****iterator begin(); //返回向量第1个元素为迭代器起始iterator end(); //返回向量末尾元素为迭代器结束reverse_iterator rbegin(); //返回向量末尾元素为逆向迭代器起始reverse_iterator rend(); //返回向量第1个元素为逆向迭代器结束//----容量capacity----size_type size(); //返回向原创 2021-07-15 07:44:16 · 143 阅读 · 0 评论 -
C++标准库 字符串流
Notice:C++标准库所有的头文件都没有扩展名(.h)。 其中18个<cname>形式的头文件内容与标准C语言的name.h头文件相同,但包含了C++扩展的功能。 C++中不建议使用name.h形式。①C1语言支持 ②C2输入/输出 ③C3诊断功能 ④C4通用工具 ⑤C5字符串⑥C6容器 ⑦C7迭代器 ⑧C8算法 ⑨C9数值操作 ⑩C10本地化...原创 2021-07-13 23:39:51 · 469 阅读 · 3 评论 -
模板类与泛型编程
extern表示该变量的定义在其他文件,当然该变量肯定是一个全局变量。在本文件使用时需要加extern说明,将作用域扩展到本文件中。extern int a; // a是在其他文件中定义的全局变量原创 2021-07-13 07:38:04 · 224 阅读 · 0 评论