![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 94
夢に向かって進む
分享知识
展开
-
C++的IO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?1. 使用itoa()函数2. 使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。原创 2024-03-03 17:23:46 · 756 阅读 · 0 评论 -
C++的类型转换
需要注意的是,decltype关键字在推断过程中只使用表达式的类型信息,不会执行任何表达式中的实际计算。此外,如果表达式为变量,而非标识符,则decltype将推断出变量的引用类型。typeid是C++的一个运算符,用于获取表达式的类型信息。它的语法形式是typeid(expression),其中expression可以是任何表达式、变量、类型或者类的对象。需要注意的是,typeid运算符只能用于在运行时获取类型信息,而无法获取模板参数的具体类型。2. 说说4中类型转化的应用场景。原创 2024-03-03 17:20:51 · 810 阅读 · 0 评论 -
特殊类的设计
抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。该模式涉及一个抽象工厂接口,具有多个方法,每个方法用于创建不同种类的对象。具体的工厂类实现这个接口,并负责创建一组相关的产品。工厂方法模式通过引入工厂等级结构,解决了简单工厂方法模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。原创 2024-03-03 17:19:15 · 857 阅读 · 0 评论 -
C++11的一些特性
std::initializer_list是一个标准库类型,用于表示一个初始化列表。它是在C++11中引入的,并被用于简化创建和传递列表的过程。std::initializer_list类似于数组,可以存储一组同类型的元素。它作为函数参数或构造函数的参数时,可以方便地将多个值作为一个参数传递。例如,可以使用std::initializer_list来初始化一个容器,或者在函数调用时传递多个参数。支持迭代器,可以通过begin()和end()方法访问列表中的元素。原创 2024-03-03 17:10:55 · 1019 阅读 · 0 评论 -
哈希相关知识
1. unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。2. 在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。3. 在内部,unordered_map没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。原创 2024-03-03 16:38:29 · 921 阅读 · 0 评论 -
异常的捕捉
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了(在实际使用中,许多公司确实会根据自己的需求自定义异常继承体系,以进行规范的异常管理。这样做的目的是为了确保在一个项目中大家都能按照一定的规范抛出和处理异常,避免异常处理的混乱和不一致。捕获一个基类异常对象就可以处理继承自该基类的派生类异常是因为派生类对象可以赋值给基类对象。原创 2024-03-03 16:25:52 · 747 阅读 · 0 评论 -
map和set的使用以及底层原理
map和set的使用和底层原理原创 2023-08-13 13:58:09 · 141 阅读 · 0 评论 -
搜索二叉树(二叉树进阶)
二叉搜索树的模拟实现原创 2023-08-11 01:32:50 · 142 阅读 · 0 评论 -
C++多态
C++多态详解原创 2023-08-11 01:24:59 · 182 阅读 · 0 评论 -
(C++)继承
继承详解原创 2023-08-11 01:14:48 · 324 阅读 · 0 评论 -
模板的进阶
非类型模板参数、模板特化、模板分离编译原创 2023-08-10 19:46:23 · 60 阅读 · 0 评论 -
stack(栈)和queue(队列)
stack和queue原创 2023-08-10 18:52:58 · 178 阅读 · 0 评论 -
list的使用和模拟实现
list的使用和模拟实现原创 2023-08-10 18:06:10 · 1019 阅读 · 0 评论 -
vector
vector的使用和模拟实现原创 2023-08-10 17:50:04 · 69 阅读 · 0 评论 -
string
string的使用和模拟实现原创 2023-08-10 17:42:09 · 72 阅读 · 0 评论 -
模板初阶和使用
class 类模板名// 类内成员定义class Stack //Stack不是具体的类,是编译器根据被实例化的类型生成具体类的模板public:, _size(0){}_size++;//用来演示类中声明,在类外定义。//其他函数..~Stack()private:T* _array;int _size;//类外定义i < _size;i++)//普通类:类名和类型是一样的//类模板:类名和类型是不一样的//类名:Stack//类型:Stack<T>原创 2023-06-06 23:56:54 · 42 阅读 · 0 评论 -
C&C++内存管理
int _val;:_val(x){}int main()//C的方式//C++的方式//开空间+调用构造函数初始化return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。new的原理1. 调用operator new函数申请空间2. 在完成申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作。原创 2023-06-06 23:49:36 · 34 阅读 · 0 评论 -
类与对象(凑数)
/ 类体:由成员函数和成员变量组成//和结构体一样,后面一要有分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1、声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作。原创 2023-05-13 01:11:45 · 49 阅读 · 0 评论 -
C++初阶
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。//1.正常的命名空间定义//命名空间里面可以定义变量/函数/类型int* next;int data;//2.命名空间支持嵌套定义int a = 10;int b = 20;int a = 10;int b = 20;//3.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。原创 2023-05-13 00:51:49 · 63 阅读 · 0 评论