avatar
文章
864
标签
158
分类
0

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

麦溪·在路上

Android之性能监控框架
发表于2022-01-05
[TOC] 概述
C++数据结构之map学习
发表于2022-01-05
[TOC] 文章参考:https://www.w3cschool.cn/cpp/cpp-fu8l2ppt.html 文章参考:http://c.biancheng.net/view/7235.html 概述map底层实现C++ STL 标准库中,不仅是 unordered_map 容器,所有无序容器的底层实现都采用的是哈希表存储结构。更准确地说,是用“链地址法”(又称“开链法”)解决数据存储位置发生冲突的哈希表,整个存储结构如图 1 所示。 其中,Pi 表示存储的各个键值对。 可以看到,当使用无序容器存储键值对时,会先申请一整块连续的存储空间,但此空间并不用来直接存储键值对,而是存储各个链表的头指针,各键值对真正的存储位置是各个链表的节点。 map[]和map.at()取值之间的区别文章参考:https://blog.csdn.net/guotianqing/article/details/108896065 文章参考:http://c.biancheng.net/view/7177.html 注意,aMap是map类的对象,通过aMap[key]取值和通过aMap.at(key)取 ...
Android之性能监控框架
发表于2022-01-05
[TOC] 人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动。 例如,在《C运算符重载》一章中的《C实现可变长度的动态数组》一节中,我们实现了一个可变长的整型数组类,可能还需要可变长的 double 数组类,可变长的 CStudent 数组类,等等。如果要把类似于可变长整型数组类的代码都重写一遍,无疑非常麻烦。有了类模板的机制,只需要写一个可变长的数组类模板,编译器就会由该类模板自动生成整型、double 型等各种类型的可变长数组类了。 C++ 中类模板的写法如下: 1234template <类型参数表>class 类模板名{ 成员函数和成员变量}; 类模板看上去很像一个类。下面以 Pair 类模板为例来说明类模板的写法和用法。 实践中常常会碰到,某项数据记录由两部分组成,一部分是关键字,另一部分是值。关键字用来对记录进行排序和检索,根据关键字能查到值。例如,学生记录由两部分组成,一部分是学号 ...
Android之性能监控框架
发表于2022-01-05
[TOC] 概述
Android之性能监控框架
发表于2022-01-05
[TOC] 函数模板定义1234567template<typename T>bool getValue(const string &key, T *out, const std::map<string, T> &map) { const auto &it = map.find(key); if (it == map.end()) return false; *out = it->second; return true;}
Android之性能监控框架
发表于2022-01-05
[TOC] 概述C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?邀,这个问题让我想起我在实习的时候犯的一个错误,就是把模版类的定义和实现分开写了,结果编译出错,查了两天才查出问题。 C++中每一个对象所占用的空间大小,是在编译的时候就确定的,在模板类没有真正的被使用之前,编译器是无法知道,模板类中使用模板类型的对象的所占用的空间的大小的。只有模板被真正使用的时候,编译器才知道,模板套用的是什么类型,应该分配多少空间。这也就是模板类为什么只是称之为模板,而不是泛型的缘故。 既然是在编译的时候,根据套用的不同类型进行编译,那么,套用不同类型的模板类实际上就是两个不同的类型,也就是说,stack和stack是两个不同的数据类型,他们共同的成员函数也不是同一个函数,只不过具有相似的功能罢了。 如上图所示,很简短的六行代码,用的是STL里面的stack,stack和stack的默认构造函数和push函数的入口地址是不一样的,而不同的stack对象相同的函数入口地址是一样的,这个也反映了模板类在套用不同类型以后,会被编译出不同代码的现象。 所以模板类的实现,脱离具体的使用,是无 ...
Android之性能监控框架
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/czyt1988/article/details/52812797 概述C++11的模板类型判断——std::is_same和std::decay 问题提出:有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢? 如: 123456#include <iostream>template<typename TYPE>void typeCheck(TYPE data) { //do something check data type //std::cout<< out put the type} 这里就需要用到C++11的type_traits头文件了,type_traits头文件定义了很多类型检查相关的方法,上面的例子具体用到了其中两个结构: std::is_samestd::is_same 判断类型是否一致。位于头文件<type_traits>中 这个 ...
Android之性能监控框架
发表于2022-01-05
[TOC] 概述根据说明文档“How To Write Shared Libraries”介绍, 有四种方法: 在方法声明定义时,加修饰:attribute((visibility(“hidden”))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 gcc 在链接时设置 -fvisibility=hidden,则不加 visibility声明的都默认为hidden; gcc默认设置 -fvisibility=default,即全部可见; 在gcc中加了这个设置之后表示所有的函数都是对外不可见了,然后在代码里面对于想公开的函数加上 attribute((visibility(“default”))) 使用export map,gcc -Wl,–version-script=export.map, 在export.map中指定 12345{ global:export_func; local:*;};// 则除了export_func外,全部为内部可见; 使用libtool的export-symbols选项,没试过,略 ...
C++之求和函数accumulate
发表于2022-01-05
[TOC] 概述文章参考:http://c.biancheng.net/view/682.html 概述 该算法在numeric头文件中定义。 我们已经介绍过 accumulate() 算法的基本版本,可以用 + 运算符求出元素序列的和。前两个参数是定义序列的输入迭代器,第三个参数是和的初值;第三个参数的类型决定了返回值的类型。第二个版本的第 4 个参数是定义应用到总数和元素之间的二元函数对象。这时,我们在必要时可以定义自己的加法运算。例如: 123456789std::vector<int> values {2, 0, 12, 3, 5, 0, 2, 7, 0, 8};int min {3};auto sum = std::accumulate(std::begin(values), std::end(values), 0, [min] (int sum, int v){ if(v < min) return sum; return sum + v;});std::cout < ...
Android之性能监控框架
发表于2022-01-05
[TOC] 概述文章参考:https://www.runoob.com/cprogramming/c-function-memcpy.html 概述123#include<string.h>void *memcpy(void*dest, const void *src, size_t n); 功能 由src指向地址为起始地址的连续n个字节的数据复制到以destination指向地址为起始地址的空间内。 函数返回一个指向dest的指针。
1…333435…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