avatar
文章
864
标签
158
分类
0

主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我
麦溪·在路上
主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我

麦溪·在路上

C++虚函数的实现原理
发表于2022-01-05
[TOC] 概述文章参考:https://jacktang816.github.io/post/virtualfunction/ c++作为面向对象的语言,主要有三大特性:继承、封装、多态。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时绑定,要么试图做到运行时绑定。因此C++的多态分为静态多态(编译时多态)和动态多态(运行时多态)两大类。静态多态通过重载、模板来实现;动态多态就是通过本文的主角虚函数来体现的。 实际上,当一个类中包含虚函数时,编译器会为该类生成一个虚函数表,保存该类中虚函数的地址。同样派生类继承,派生类中自然一定有虚函数,所以编译器也会为派生类生成自己的虚函数表。当我们定义一个派生类对象编译器会检测该类是否有虚函数,所以为这个派生类对象生成一个虚函数指针,指向该类型的虚函数表,这个虚函数指针的初始化实在构造函数中完成的。 虚函数对C++ 了解 ...
C++运算符重载基础学习
发表于2022-01-05
[TOC] 概述
Android之性能监控框架
发表于2022-01-05
[TOC] 文章参考:http://c.biancheng.net/view/7231.html C++ STL 标准库中提供有 4 种无序关联式容器,本节先讲解 unordered_map 容器。 unordered_map 容器,直译过来就是”无序 map 容器”的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。 对于已经学过 map 容器的读者,可以将 unordered_map 容器等价为无序的 map 容器。 具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。 值得一提的是,unordered_map 容器在<uno ...
C++中数据结构Vector基础
发表于2022-01-05
[TOC] 概述什么是vector数组 vector是向量类型 vector数组是可以存放任意数据类型的动态数组 和普通数组类似,可以通过下标对数组中的元素进行引用 vector的基本操作 使用vector数组要在头文件中加 #include vector数组的声明 1vector<int> vector;//声明一个存放int型的向量 vector数组的初始化 12345678vector<int> vec(1,2,3,4,5,6);//vec中的内容为1,2,3,4,5,6vector<int> vec(a);//声明并用a向量初始化vec向量int a[5]={1,2,3,4,5};vector<int> vec(a,a+5);//将a数组的元素用来初始化vector向量vector<int> vec(&a[1],&a[4]);//将a[1]-a[4]范围内的元素作为vec的初始值 向vector中插入元素 12345678910//在vector的末尾插入新元素vec ...
Android之性能监控框架
发表于2022-01-05
[TOC] 概述list 由双向链表(doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供 [] 操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。 list使用list定义和初始化使用之前必须加相应容器的头文件: 1#include <list> // list属于std命名域的,因此需要通过命名限定,例如using std::list; 定义的代码如下: 12345list<int> a; // 定义一个int类型的列表alist<int> a(10); // 定义一个int类型的列表a,并设置初始大小为10list<int> a(10, 1); // 定义一个int类型的列表a,并设置初始大小为10且初始值都为1list<int> b(a); // 定义并用列表a初始化列表bdeque<int> b(a.begin(), ++a ...
C++中数据结构map基础学习
发表于2022-01-05
[TOC] 文章参考:http://c.biancheng.net/view/7173.html 概述C++ 中 map 提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在 map 中出现一次;第二个称之为该关键字的对应值。在一些程序中建立一个 map 可以起到事半功倍的效果,本文为大家总结了 map 的一些基本简单的操作! 构造函数12345// 导入map依赖#include <map> // STL头文件没有扩展名.h// 无参构造函数std::map<int , std::string> mapPerson; 常用方法插入数据12345678// insert 函数插入 pair 数据std::map < int , std::string > mapPerson;mapPerson.insert(pair < int,string > (1,"Jim"));// insert 函数插入 value_type 数据mapPerson.in ...
C++中数据结构tuple基础学习
发表于2022-01-05
[TOC] 概述tuple是一个固定大小的不同类型值的集合,是泛化的std::pair。我们也可以把他当做一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体使程序更简洁,直观。std::tuple理论上可以有无数个任意类型的成员变量,而std::pair只能是2个成员,因此在需要保存3个及以上的数据时就需要使用tuple元组了。
C++的迭代器基础学习
发表于2022-01-05
[TOC] 概述迭代器是一种抽象的设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器,除此之外,STL中迭代器一个最重要的作用就是作为容器与STL算法的粘合剂。 迭代器的作用就是提供一个遍历容器内部所有元素的接口,因此迭代器内部必须保存一个与容器相关联的指针,然后重载各种运算操作来遍历,其中最重要的是*运算符与->运算符,以及++、–等可能需要重载的运算符重载。这和C++中的智能指针很像,智能指针也是将一个指针封装,然后通过引用计数或是其他方法完成自动释放内存的功能。
Android之性能监控框架
发表于2022-01-05
[TOC] 概述
Android之性能监控框架
发表于2022-01-05
[TOC] 概述vector转数组12345678910111213141516171819202122232425262728#include <vector>#include <iostream> using std::vector; int main(void){ //初始化为10个c字符 vector<unsigned char> vec(10, 'c'); unsigned char charray[vec.size()]; //vector全部转到数组 memcpy(charray, &vec[0], vec.size() * sizeof(vec[0])); for(int i = 0; i != sizeof(charray); ++i){ std::cout << charray[i] ; //打印出来观察一下 } std::cout << std::endl; //转部分vect ...
1…323334…87
avatar
Frewen.Wang
在青麦地上跑着,雪和太阳的光芒
文章
864
标签
158
分类
0
关注我
公告
This is my Blog
最新文章
无题2023-12-22
无题2023-07-28
无题2023-07-27
基于Windows11安装Ubuntu双系统2023-07-20
无题2023-07-17
标签
系统源码 滤波算法 工具使用 云存储 卷积神经 Linux Android框架 STL函数 Activity pytorch NEON 编译脚本 go 渲染机制 OpenGL 编程工具 虚函数 RectNative JVM Linux命令 Kotlin基础 OpenMP AI const IDEA QNN C++ SELinux 目标检测 软件安装 threading 量化方法 四大组件 编译构建 SystemServer 开源项目 unique_ptr Java基础 系统安装 BroadcastReceiver
归档
  • 十二月 20231
  • 七月 20234
  • 六月 20231
  • 四月 20231
  • 三月 20232
  • 二月 202311
  • 一月 20232
  • 十二月 20221
网站资讯
文章数目 :
864
本站总字数 :
778.1k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By Frewen.Wang
框架 Hexo|主题 Butterfly