C++
文章平均质量分 69
qq_38196982
这个作者很懒,什么都没留下…
展开
-
C++--强制类型转换static_cast、dynamic_cast、const_cast、reinterpret_cast
C++中的强制类型转换主要有4种static_cast、dynamic_cast、const_cast、reinterpret_cast 1.static_cast 静态类型转换,使用形式如下:static_cast<new_type> (expresion); 其中new_type为目标类型,expresion为原始数据类型变量或表达式。 static_cast用来强迫隐式转换,如将non-const对象转为...原创 2021-09-14 20:36:51 · 530 阅读 · 0 评论 -
C++:STL算法
一、头文件 算法主要是由头文件<algorithm><functional><numeric>组成。其中<algorithm>是STL中最大的一个,包含比较、交换、查找、遍历、复制、修改等操作。<numeric>体积较小,值包含几个在序列上面进行简单数学运算的模板函数。<functional>定义了一些模板类,用以声明函数对象。二、遍历算法2.1for_each 遍历容器,函数原型为:f...原创 2021-08-12 10:27:48 · 398 阅读 · 1 评论 -
C++:函数对象、谓词、内建函数对象、函数适配器
一、基本概念 如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,这个类的对象就是函数对象。函数对象是一个对象,使用重载的()时,使用形式看起来像函数调用,又称仿函数。 函数对象(仿函数)的本质是一个类,不是一个函数。特点:函数对象不定义构造函数和析构函数,所以在构造和析构时不会发生任何问题,避免了函数调用的运行时问题 函数对象超出普通函数的概念,函数对象可以有自己的状态 函数对象可内联编译,性能好,用函数指针几乎不可能 函数对象可以作为参数传递 函数对象在使...原创 2021-08-11 17:10:57 · 187 阅读 · 0 评论 -
C++中map用法
一、头文件#include<map>map是一种以键--值(key-value)存储的数据类型二,定义1)map<int,string> m;//定义了一个空的对象m三、初始化四、常用操作1)查找元素m.find(key);//当所查找的关键key出现时,返回数据所在对象的位置。如果没有,返回m.end();...原创 2020-08-19 09:47:17 · 1237 阅读 · 0 评论 -
C++中set用法
一、头文件 关于set,必须说明的是set关联式容器。 set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。二、初始化1)set<int>s;//定义一个set容器,类型为Int三、常用操作1)s.begin();//返回指向第一个元素的迭代器2)s.end(...原创 2021-03-30 12:25:09 · 3279 阅读 · 0 评论 -
C ++ deque
1.简介deque是一个双端队列,内容保存在堆中,支持随即访问和快速插入删除,在容器中某一位置上的操作所花费的是线性时间。它的保存形式为:堆1堆2堆3每个堆保存好几个元素,堆和堆之间有指针指向。使用时添加头文件#include<deque>2.声明deque<int> c;//创建一个空的dequedeque<int> c1(c2);//将c2的内容复制到c1deque<int> c1(n);//创建一个deque,含有n原创 2021-08-10 17:50:01 · 481 阅读 · 0 评论 -
C++中vector的使用
一,头文件vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:#include<vector>二、初始化主要有以下几种初始化方法注意:对于使用vector存储二维数组,方法如下:vector<vector<int>>...原创 2020-08-24 11:05:06 · 1172 阅读 · 0 评论 -
C++中string用法
字符串长度:string s;int n=s.size();//返回字符串中字符的个数,不包括\0原创 2020-03-18 17:06:50 · 344 阅读 · 1 评论 -
C++:文件操作
文件类型分为2种:文本文件;二进制文件。文本文件:文件以文本的ASCII码形式存储二进制文件:文件以文本的二进制形式存储C++提供了操作文件的3个类:ofstream--写;ifstream--读;fstream---读写操作1.文本操作1.1写文件 写文件的流程为:包含头文件 #include<fstream>;创建流对象:ofstream ofs;;打开文件:ofs.open(“文件路径”,打开方式);;写数据:ofs<<“写入的数据”;关闭文...原创 2021-08-05 10:27:49 · 132 阅读 · 0 评论 -
C++:友元
友元的目的是让一个函数或类,访问另一个类的私有成员友元三种实现:全局函数做友元;类做友元;成员函数做友元1.全局函数做友元当全局函数想要访问类的私有成员时,需要将其声明为友元函数。示例如下:class A{private: int n;public:; int m; A() { n=10; m=20; cout<<"执行普通构造函数"<<endl; } ~A()原创 2021-08-04 11:23:52 · 131 阅读 · 0 评论 -
C++中lower_bound与upper_bound binary_search 二分查找
STL中关于二分查找的函数有三个lower_bound,upper_bound,binary_search。这三个函数都运用于有序区间,头文件都是#include<algorithm>1.lower_boundForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个...原创 2020-03-23 14:53:47 · 200 阅读 · 0 评论 -
C++构造函数
C++提供构造函数来处理对象的初始化。构造函数是一种特殊的成员函数,但构造函数不需要用户来调用,而是在建立对象时自动执行。1.无参数的构造函数#include <iostream>using namespace std;class Student{private: int age; int stuId;public: Student() { age = 13; stuId = 00012; } ~Student() { };};可以发现:构造函原创 2020-08-03 15:04:15 · 219 阅读 · 0 评论 -
C++ STL:vecotr的at()函数
arr.at(n)与arr[n]的含义一样,返回arr中第n个元素,唯一的区别在于at()函数比[]运算符更安全,因为at()不会去访问越界的元素。源码如下:at()函数:可以发现at()函数在使用进行了是否越界的判断,越界则抛出异常。示例如下:#include<iostream>#include<string>#include<cstring>#include<string.h>#include<vector>u.原创 2021-07-28 14:37:04 · 1513 阅读 · 0 评论 -
C++枚举:enum与enum class
1.enum C++中enum提供了另一种创建符号常量的方法,这种方式可以替代const。原创 2021-07-28 16:37:43 · 1470 阅读 · 5 评论 -
C++:vector的push_back()与emplace_back()
在STL中,向vector容器添加元素的函数有2个:push_back()、emplace_back()1.push_back() 在vector容器尾部添加一个元素,用法为:arr.push_back(val);2.emplace_back() C++11新增,功能与push_back相同,向vector容器尾部添加一个元素,用法为:arr.emplace_back(value);3.区别 可以发现push_back()与empl...原创 2021-07-28 11:15:03 · 5363 阅读 · 0 评论 -
C++ (void)varName
1.在代码中对于一个变量、指针会出现(void)varName这样的形式,如:///函数int func(int a,int b){ (void)b; return a;}////类class RangeFilterRenameEcho: public ActionHandler{ public: virtual int action(const DB::IAST & ast, Poco::JSON::Object::Ptr& js.原创 2021-07-09 10:57:36 · 715 阅读 · 0 评论 -
C++ decltype用法详解
1.什么是decltype decltype是C++11新增的一个关键字,和auto的功能一样,用来在编译时期进行自动类型推导。引入decltype是因为auto并不适用于所有的自动类型推导场景,在某些特殊情况下auto用起来很不方便,甚至压根无法使用。auto varName=value;decltype(exp) varName=value;auto根据=右边的初始值推导出变量的类型,decltype根据exp表达式推导出变量的类型,跟=右边的value没有关系...原创 2021-07-08 20:25:59 · 23693 阅读 · 8 评论 -
C++函数模板
1.什么是函数模板 函数模板使用泛型来定义函数,所谓泛型即不是具体的类型,可用具体的类型替换(如Int,double)。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。 为什么要使用函数模板?可以看这样的一个例子///交换两个intvoid swap(int &a,int &b){ int c; c=a; a=b; b=c;}///交换两个doublevoid swap(double &a,doubl...原创 2021-07-05 21:03:15 · 111 阅读 · 0 评论 -
C++智能指针shared_ptr
每种智能指针都是以类模版的方式实现的,shared_ptr<T>(其中T表示指针指向的具体数据类型)的第一位于<memory>头文件。 shared_pre是C++11提供的一种智能指针类,它可以在任何地方不使用时自动删除相关指针,从而帮助彻底解决内存泄露和悬空指针的问题。不同的shared_pre对象可以与相同的指针相关联,且在内部使用引用计数机制。 每个shared_ptr对象最内部指向两个内存位置:指向对象的指针;用于控制引用计数数据的指针。...原创 2021-07-05 20:27:11 · 1704 阅读 · 2 评论