![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
语法
文章平均质量分 75
不想飞的猫
不与生人论长短,不以人生论短长
展开
-
C++11——Variadic Templates(可变模板)
引入可变模板用于函数模板例1:打印一组数例2:一组数比大小可变模板用于类模板引入可变模板是C++11中非常重要也是非常值得探讨的一个语法。首先它是一个模板,可以是函数模板,也可以是类模板;其次可变也有两层含义,一方面是指模板参数的个数可变,另一方面是指模板参数的类型可变。实现可变模板的关键字说起来非常简单,就是三个点(即…,我在后面将其统一称为可变模板关键字),和汉语中的省略号很相似,都有数量不定的意思,而且可变模板本身其实也就只有这一个意思,只是用户通过递归的技巧可以设计出让人惊诧的应用。可变模.原创 2022-01-06 22:44:02 · 1240 阅读 · 0 评论 -
C++11——基于范围的for循环
基于范围的for循环是C++2.0中除了auto关键字外另一个非常实用且简单的小工具,用于实现容器中的数据的遍历,具体形式如下:/**decl:变量的声明*coll:已定义好的容器*/for(decl:coll){ statement}使用的方式也很简单:for(int i:{1,2,3,4,5}){ cout<<i<<endl;}上面的例子编译器会形成一个initializer_list,背后关联一个容器array<int,5>,{}中的数据原创 2021-12-22 10:13:24 · 802 阅读 · 0 评论 -
C++指针与引用的区别
指针和引用的区别①指针是一个变量,存储一个成员的地址;引用是一个常量(指针常量),相当于一个成员的别名②指针声明和定义可以分开;引用声明时必须初始化int* a;//指针声明a=new int(1);//指针定义int& b=a;//引用初始化③指针可以改变指向;引用一旦初始化就不可改变④指针可以指向空值;引用不可为空⑤在32位编译器上,指针的sizeof为4个字节;引用的sizeof为所指向成员的大小(引用本质是指针,本身占四个字节)⑥指针可以有多级;引用只有一级⑦在传参时,原创 2021-11-29 21:58:37 · 896 阅读 · 0 评论 -
C++中输入/输出运算符为什么一般不作为类的成员函数重载
(我被灌输的第一印象是输入输出运算符不能重载成成员函数,后来发现不是不能,而是习惯上的选择。)众所周知,作为类的非静态成员函数,第一个参数隐藏为this指针,这样才能被对象调通过 obj.fun() 的方式实现调用。若将输入/输出运算符重载为成员函数:#include<iostream>using namespace std;class Data{private: int a; int b;public: Data() { a = 0; b = 0; cout <<原创 2021-11-29 20:38:34 · 1633 阅读 · 1 评论 -
C++多态详解
C++多态详解引言虚函数与多态虚函数多态虚析构纯虚函数和抽象类总结引言多态是面向程序设计语言中数据封装和继承之外的第三个基本特征。多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将“what”和“how”分离开来。多态性改善了代码的可读性和组织性,同时也使得创建的代码就有具有展性。C++支持编译时多态(静态多态) 和 运行时多态(动态多态),运算符重载和函数重载是编译时多态(运算符重载本质上也是函数重载,要求函数名相同,但形参列表中参数个数、类型、类型顺序三者至少有一个不同,原创 2021-05-30 08:51:19 · 1104 阅读 · 0 评论 -
C++STL map/multimap容器
1、map/multimap容器简介map 的特性是所有的元素都会根据元素的键值自动排序。map所有元素都是pair(对组),同时拥有实值和键值,pair的第一元素被认为是键值。不能通过map的迭代器改变map的键值,因为map的键值关系到map元素的排序规则,任意改变map的键值将会破坏map组织。如果想修改map的实值是可以的。map和list拥有相同的某些性质,在对容器进行插入或删除操作时,除了删除元素外其他所有元素的迭代器依然有效。multimap和map的操作类似,唯一区别是multim原创 2021-05-26 23:00:47 · 379 阅读 · 0 评论 -
C++STL set/multiset容器
C++STL set/multiset容器1、set/multiset容器简介2、API3、使用insert、erase对组(pair)lower_bound、upper_bound更改set排序规则1、set/multiset容器简介set元素的特性是所有元素都会根据元素的键值自动排序。set的元素不像map可以同时拥有实值和键值,set的元素既是实值也是键值。set不允许两个元素有相同的键值。不能通过set的迭代器改变set元素的值,因为set的元素值就是键值,关系到set元素的排序规则,如果任意原创 2021-05-25 22:59:25 · 364 阅读 · 0 评论 -
C++STL list容器
1、list容器简介链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为一个结点)组成,结点可以在运行时动态生成。每个结点包括两部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list的好处是每次插入或者删除一个元素,就配置或者释放一个元素的空间。list对空间的运用绝对精准,不浪费。对于任何位置的元素插入或删除,list永远是常数时间。采用动态存储分原创 2021-05-24 23:01:32 · 380 阅读 · 0 评论 -
C++STL deque容器
1、deque VS vectordeque被称为双端动态数组。deque插入和删除的时间是一个常数(不会因为数据量的大小改变操作所耗时)deque容器没有容量的概念,动态的以分段连续空间组成,随时可以增加一段新的空间并连接起来。deque的Random Access Iterator(随机访问迭代器)不是普通的指针,复杂度与vector不是一个量级,其运算效率大大降低。除非必要,尽可能用vector而不用deque。对deque进行排序时,为了提高效率,先将deque完整复制到vect原创 2021-05-21 21:01:38 · 360 阅读 · 0 评论 -
C++ STL vector容器详解
C++ STL vector容器详解1、vector VS array2、vector迭代器3、vector空间容量4、vector空间扩充5、vector函数接口6、vector容器存放自定义对象1、vector VS arrayvector的数据安排及操作方式与array非常相似,唯一差别在于空间运用的灵活性。array是静态空间,一旦配置就不能改变,要更换空间必须手动配置一块新的空间,再将旧的数据搬到新空间,再释放原空间。vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间来容原创 2021-05-20 19:56:38 · 406 阅读 · 0 评论 -
C++STL所有容器底层数据结构概述
C++STL所有容器底层数据结构概述1、顺序容器1.1 vector1.2 deque1.3 list2、关联容器2.1 map & multimap & unordered_map & unordered_multimap2.2 set & multiset & unordered_set & unordered_multiset3、适配器3.1 queue3.2 priority_queue3.3 stack1、顺序容器1.1 vector头文件为原创 2021-05-19 11:25:19 · 783 阅读 · 1 评论 -
C++STL概述
STL概述1 简介2 六大组件3 优点1 简介STL(Standard Template Library),标准模板库。是惠普实验室开发的一系列软件的统称,现在主要用在C++中,但引入C++之前在该技术已经存在很长时间。STL从广义上分为容器、算法、迭代器,容器和算法之间通过迭代器进行无缝连接。STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的函数和类组成的库来说提供了更好的代码重用机会。C++标准程序中隶属于STL的占到了80%以上。容器(container)、算法(algorit原创 2021-05-18 20:38:45 · 457 阅读 · 0 评论 -
C++回调函数详解
1、什么是回调函数2、为什么需要回调函数3、什么函数可以作为回调函数原创 2021-05-10 13:52:04 · 20082 阅读 · 13 评论