
C++
文章平均质量分 73
Xbox4KpsX
Master of HPC with Data Science. Seeking a challenging career with a progressive organization.
展开
-
【C++】使用vector存储百万级数据怎么优化?
描述:vector存储百万级数据如何优化?一百万个int, 100 0000 * 4B = 4 * 10^6 B, 也就是4MB,还没L3 cache大,请问你还想怎么优化?????????????????????????一百万个int, 100 0000 * 4B = 4 * 10^6 B, 也就是4MB,还没L3 cache大,请问你还想怎么优化?????????????????????????一百万个int, 100 0000 * 4B = 4 * 10^6 B, 也就是4MB,还没L3 cac原创 2021-05-11 15:53:00 · 2457 阅读 · 1 评论 -
【C++】dynamic_cast
dynamic_castdynamic_cast:主要用于有继承关系的为什么要用dynamic_cast用法父类->子类 | 子类->父类dynamic_cast:主要用于有继承关系的dynamic_cast是将一个基类对象指针(或引用)转换到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理。dynamic_cast可以用来检查两者是否有继承关系。因此该运算符实际上只接收基于类对象的指针和引用的类转换。为什么要用dynamic_cast用dynami原创 2021-05-11 11:33:27 · 357 阅读 · 0 评论 -
【C++】临时对象 | 返回值优化 RVO
返回值优化 RVO何时会生成临时对象?以值的方式给函数传参类型转换的时候函数返回一个对象时(不是对象引用)返回值优化 ROV移动语义何时会生成临时对象?以值的方式给函数传参按值传递时,首先将需要传给函数的参数,调用拷贝构造函数创建一个副本,所有在函数里的操作都是针对这个副本,也正是因为这个原因,在函数体力对该副本进行任何操作都不会影响原参数。类型转换的时候例如 myclass = 1000;此处调用拷贝赋值运算符,当myclass拷贝赋值运算符参数类型与右边100不符的时候,会以1000为参数调原创 2021-05-07 18:00:34 · 497 阅读 · 0 评论 -
【C++11】智能指针 | shared_ptr 陷阱 / 缺点
shared_ptr 陷阱 / 缺点不要把原生指针给多个shared_ptr管理引用计数的存在会对性能/大小产生影响不要把this指针给shared_ptr进行管理引用计数:记的是有多少个智能指针,拥有某个内存的所有权。举个例子:auto sharedPtr = make_shared<Class>();cout << sharedPtr.use_count() 输出为1, 表明对Class这个类的所有权拥有者只有1个。不要把原生指针给多个shared_ptr管理为原创 2021-05-07 16:40:51 · 1316 阅读 · 0 评论 -
【C++11】智能指针 | shared_ptr和unqieu_ptr所有权转换
shared_ptr和unqieu_ptr相互转换unique_ptr -> shared_ptr (OK)shared_ptr -> unique_ptr (NOT OK)https://www.coder.work/article/12866unique_ptr -> shared_ptr (OK)标题的意思:如何将unique_ptr的所有权,转移给shared_ptr可以轻松的将unique_ptr指针通过移动构造函数,转换为shared_ptr,对对象进行管理,反之不原创 2021-05-07 11:04:12 · 2282 阅读 · 0 评论 -
【LeetCode】198. 打家劫舍 | 动态规划
解题思路关键在于理解递推公式!!看官方题解即可。https://leetcode-cn.com/problems/house-robber/solution/da-jia-jie-she-by-leetcode-solution/代码class Solution {public: int rob(vector<int>& nums) { int n = nums.size(); if (n == 1) { ret原创 2021-05-05 22:27:19 · 136 阅读 · 0 评论 -
【C++11】智能指针 | 重拳出击 -> 实现自己的智能ptr
实现自己的AutoPtrtemplate <typename T>class AutoPtr {public: explicit AutoPtr (T* ptr = nullptr) { std::cout << "set new object, My Class = " << ptr << std::endl; _ptr = ptr; } ~AutoPtr () { std::c原创 2021-04-14 23:00:43 · 240 阅读 · 0 评论 -
【C++11】泛型编程:函数模板&& 类模板
【C++11】泛型编程:函数模板&& 类模板难点基础知识函数模板类模板难点首先要知道<> 这个尖括号是什么意思?<T1, T2>对应的入参应该是 <typename T1,typename T2>;用类模板定义对象的写法如下:类模板名<真实类型参数表> 对象名(构造函数实际参数表);AutoPtr myclass(new MyClass());如果类模板有无参构造函数,那么也可以使用如下写法:类模板名 <真实类型参原创 2021-04-12 18:39:48 · 294 阅读 · 0 评论 -
【C++11】std::bind和std::placeholder
std::bind和std::placeholderstd::bind()std::placeholderCode Examplesstd::bind()https://cplusplus.com/reference/functional/bind/examples: double my_divide (double x, double y) {return x/y;} auto fn_five = std::bind (my_divide,10,2); // re原创 2021-04-05 20:12:51 · 322 阅读 · 0 评论 -
【C++】内存分布 | 变量内存分配位置
内存分布 | 变量内存分配位置C++变量(按作用域分类):全局变量静态全局变量:局部变量静态局部变量C++内存分布(按内存空间分布):结论:BSS段(Block Started by Symbol:存放未初始化或者初始化为0的非const全局变量。 运行时确定。DATA区:赋了初值且初值不为0的非const全局变量, 常量, 静态变量,堆中的变量等代码段(TXT):在内存中被映射为只读,编译时确定。总结:因为这些变量分布在不同的内存空间,这正是这些变量生命周期存在差异的原因。C++变量(按作用域分类):原创 2021-04-04 12:38:38 · 587 阅读 · 2 评论 -
【C++11新特性】lambda匿名函数 | mutable关键字隐藏风险
基础知识:[1] https://blog.youkuaiyun.com/Zhenzhong_Xu/article/details/115422620?spm=1001.2014.3001.5501mutable关键字先看代码:int main(){ int var = 5; static int base = 3; function<int()> f = [=] () mutable -> int { var++; base++;原创 2021-04-04 12:04:34 · 641 阅读 · 1 评论 -
【C++11新特性】lambda匿名函数
lambda匿名函数lambda表达式定义关键字mutable关键字(可省略):throw表达式 ( 可省略):“-> 返回值类型”(可省略)捕获列表功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入lambda表达式定义定原创 2021-04-03 23:22:19 · 298 阅读 · 0 评论 -
【C++】 C++安全编码重点规范整理
通用规则C安全编程基础要求变量操作断言操作函数操作循环异常类字符串/数组操作正确使用安全函数整数内存不安全函数文件输入输出敏感信息处理原创 2021-04-02 10:32:53 · 1078 阅读 · 2 评论 -
【C++】 C/C++通用编程重点规范整理
资源分配和释放C++11特性代码简介和安全性提升智能指针lambda原创 2021-04-02 10:31:10 · 1474 阅读 · 0 评论 -
【C++】vector / deque 动态数组
deque 双端动态数组deque定义:deque 知识点:相较于vector的优点/缺点参考资料:https://en.cppreference.com/w/cpp/container/dequedeque定义:vector (动态数组容器):动态数组,用来存放T类型的对象,可以自动增加容量,但只能在序列末尾高效地增加或删除元素。deque (双向队列数组容器) :/dek/是一个长度可变的、可以自动增长的序列,在序列的两端都能高效地增加或删除元素(相对于vector)deque 知识点:原创 2021-03-29 10:02:56 · 255 阅读 · 0 评论