C++
文章平均质量分 58
DUT_LYH
这个作者很懒,什么都没留下…
展开
-
【LeetCode】【背包】 416. 分割等和子集
背包原创 2022-07-27 19:56:35 · 122 阅读 · 0 评论 -
【内存查看&指针强转&union】判断大小端存储方式
在vs里面打开内存查看器打开调试,窗口,内存,内存1在地址中输入&a,可以获取a的内存地址的信息将地址的最后一位改成5,可以看到数字从左向右移动了一格说明地址是从左向右增加的,也就是左边是地址的低位那么就是说低位储存了78,就是这个int的低权重的位置,所以是小端存储可以使用char*截取数据进行判断原创 2021-09-24 10:28:33 · 161 阅读 · 0 评论 -
【C++魔法:bennyhuo&持续更新】initializer_list、constexpr、 fold expression折叠
.学习网址学习网址https://www.bilibili.com/video/BV1wb4y1z7Aq?spm_id_from=333.999.0.0原创 2021-11-21 21:05:52 · 312 阅读 · 0 评论 -
【STL源码阅读】std::sort(),十分钟了解msvc的stl的sort实现
https://www.geeksforgeeks.org/internal-details-of-stdsort-in-c/简化版本/* A Program to sort the array using Introsort.The most popular C++ STL Algorithm- sort()uses Introsort. */#include<bits/stdc++.h>using namespace std;// A utility function .原创 2021-10-30 22:55:19 · 745 阅读 · 1 评论 -
【如何实现tinySTL】实现小型的vector string 将 string 放入vector中
.想法来源语法细节类内的静态(static)成员在类外定义的时候不加static想法来源为了巩固C++知识,在知乎上调研了一番之后决定采用陈硕前辈的想法计划自己实现一个简易版本的vector再实现一个string类然后将string 放进vector里面知乎如何从零开始手写一个tiny STL? - 陈硕的回答 - 知乎https://www.zhihu.com/question/53085291/answer/133458242GitHub仓库地址语法细节类内的静态(stati原创 2021-10-28 17:14:30 · 718 阅读 · 0 评论 -
【STL源码阅读】type_traits
traits:萃取机用来获取类型,回答问题的例如 is_void is_null_pointer等https://en.cppreference.com/w/cpp/header/type_traits.实现机制下面实现一个`is_int`对于是够是int的提问对于其他类型直接继承m_false_type表示不是int类型对于int类型继承了m_true_type完整代码实现机制template <class T, T v>struct m_integral_constant.原创 2021-10-24 21:32:35 · 275 阅读 · 0 评论 -
【C++】语法糖
__FILE__ __LINE__=可以输出变量名的函数__FILE__:正在编译文件的路径及文件名__LINE__:正在编译文件的行号__DATE__:编译时的日期 如“Jun 17 2017”__TIME__:编译时的时间 如”10:00:00“__STDC__:判断是不是标准C程序...原创 2021-10-11 20:01:47 · 770 阅读 · 0 评论 -
[c++11] 删除(delete)的函数为什么会参与重载决议:函数返回值优化Return value optimization
删除移动构造函数c++11编译报错,说引用了deleted的函数使用c++17编译是通过的,运行良好c++20也是错的,报错同上open-std关于delete的说法上面的运行结果,为什么只调用了构造函数,一次拷贝也没有调用呢?因为c++进行了函数返回值的优化RVO函数返回值优化(RVO,Return value optimization)这样就行了两次拷贝,其中那个临时的对象是没有用的其实现在的编译器做的是直接将obj的引用传进去了,在里面直接将返回值构造在obj处原创 2021-09-28 10:11:12 · 358 阅读 · 0 评论 -
【STL源码阅读】 vector 内存增长策略
加粗样式vector是边长的数组,每次使用的时候如果超过现在的容量(capacity)大小会自动重新分配内存那么每次都会增长多少呢有人说是增长原来大小的一半为了一探究竟,可以直接打开stl的源码看一下#include <iostream>#include <vector>using namespace std;#define debug(x) cout<<#x<<": "<<(x)<<endl;int mai原创 2021-09-06 16:21:50 · 237 阅读 · 0 评论 -
【C++笔记】Effective C++ && C++ Primer
explicit关键字用来放置类进行隐式转换例如一个类有一个形参是int的构造函数如下,在Pos的vector push的时候 ,直接使用一个int 就可以隐式转换为Pos如果不想被隐式转换 就加上explicit关键字#include <iostream>#include <tuple>#include <queue>#include <stack>#include <list>using namespace std;原创 2021-08-28 23:15:25 · 606 阅读 · 0 评论 -
【侯捷】c++ 面向对象高级编程笔记(持续更新)
一个类中如果至少有一个虚函数,那么这个类就有一个虚指针vptrvptr指向了一个虚函数表 如果子类重写了该虚函数,就要实际创建一份函数否则就公用一份函数,只是在虚函数表中添加一项即可(*p->vptr[n])(p);在虚函数表中找到了index为n的函数地址,将this指针p传入 之后进行调用动态绑定的三个条件通过指针调用up cast 向上转型 父类的指针指向了子类对象调用的虚函数...原创 2021-08-05 17:55:53 · 191 阅读 · 0 评论 -
c++ 右移运算符重载 << 参数个数
自己定义的point类,想使用c++的cout进行输出有一种办法就是重载ostream的右移运算符但是cpp源码不太好修改还有一个办法就是是直接重载右移运算符#include <iostream>using namespace std;class Point {public: Point() { } Point(int x, int y): x(x),y(y) {} ~Point() { } friend ostream& operator <.原创 2021-08-03 20:30:25 · 581 阅读 · 0 评论 -
map set erase(map.find(key)) 删除出错【必须判断迭代器是否有效】
https://stackoverflow.com/questions/952888/map-erase-map-enderase 必须有一个真实的值,不能传递end如果想找到元素并且使用迭代器删除,需要进行判断erase(map.find(key))这样是错误的,如果没有找到key 那么程序就会异常 而这个异常有时候会出现在其他的地方 很难定位如下 ,在pos里面删除了unordered_set的end 在arr里面报错了//// Graph.cpp// Cliques////原创 2021-06-22 19:40:30 · 932 阅读 · 0 评论 -
【cppreference】C++11 stoi 文档阅读
int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 );int stoi( const std::wstring& str, std::size_t* pos = 0, int base = 10 );(1) (C++11 起)long stol( const std::string& str, std::size_t* pos = 0, int base.原创 2021-05-12 21:39:22 · 475 阅读 · 0 评论 -
C++11 给vector添加数组越界检查,并打印错误信息 = 继承stl的vector
#include <iostream>#include <functional>#include <vector>#include <algorithm>using namespace std;#define debug(x) cout<<#x<<": "<<(x)<<endl;template<typename T>class MyVec :public std::vector.原创 2021-03-11 19:49:42 · 463 阅读 · 0 评论 -
二分查找需要注意的地方:整形溢出、死循环
1. 整形溢出取m和n的中位数,中位数上取整使用mid = (m+n+1) / 2可以避开讨论m + n + 1可能导致整形溢出,可以换成等价写法m + (n-m+1)/2死循环int a[10];while(l<r){ m = (l+r)/2; if(){ l = m; }else{ r = m+1; }}当数组长度是2时,m和l的值会一直相等,之后死循环解决方法m = (l+r+1)/2...原创 2021-03-04 22:14:41 · 329 阅读 · 2 评论 -
C++使用shared_ptr(智能指针) 实现多态调用
#include <iostream>#include <vector>using namespace std;using LL = long long int;#define debug(x) cout<<#x<<": "<<(x)<<endl;#define deOut(x) cout<<#x<<": "<<(x)<<" ";#define de15lf(x) {cou原创 2021-02-04 22:27:54 · 798 阅读 · 0 评论 -
C++ 浮点数精度不足的处理
#include <iostream>using namespace std;using LL = long long int;#define debug(x) cout<<#x<<": "<<(x)<<endl;#define deOut(x) cout<<#x<<": "<<(x)<<" ";#define de15lf(x) {cout<<#x<<": ";原创 2021-02-04 21:57:13 · 1040 阅读 · 0 评论 -
C++ lamda表达式做函数参数的两种方式
lamda表达式#include <iostream>#include<functional>using namespace std;#define debug(x) cout<<#x<<": "<<(x)<<endl;// 使用函数模板template<typename T>int cal(T add, int a, int b) { return add(a, b);}// 使用functi原创 2021-01-25 12:01:03 · 626 阅读 · 0 评论 -
快速入门 CUDA C++ 混编
教程: https://zhuanlan.zhihu.com/p/34587739kernel是CUDA中一个重要的概念,kernel是在device上线程中并行执行的函数一个kernel所启动的所有线程称为一个网格(grid)SM(Streaming Multiprocessor),流式多处理器每个线程块有包含共享内存(Shared Memory),可以被线程块中所有线程共享,其生命周期与线程块一致。此外,所有的线程都可以访问全局内存(Global Memory)。还可以访问一些只读内存块:常量原创 2020-05-08 22:40:13 · 901 阅读 · 0 评论 -
【C++ 11多线程】 快速入门:线程创建&数据竞争和互斥&LogFile&死锁
https://www.bilibili.com/video/av39161756?p=1并发编程包括多进程编程和多线程编程进程之间相互通讯的方法文件管道消息队列多线程的优点线程启动速度快轻量级开销低多线程的缺点管理较难不能在分布式系统下运行运行环境VS2013 + 控制台应用程序1.HelloWord#include <iostream>...原创 2020-02-14 19:19:00 · 491 阅读 · 0 评论 -
C++ stl 容器 复杂度
https://www.cnblogs.com/LloydDracarys/articles/8872804.htmlmap, set, multimap, and multiset上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:插入: O(logN)查看:O(logN)删除:O(logN)hash_map, hash_set, hash_multi...转载 2019-04-17 21:31:32 · 480 阅读 · 0 评论 -
stl 堆的使用 --pop vector的erase的注意事项
使用注意:1 最大堆 less() 最小堆 greater()2 pop_heap 不是将vector的元素删除 只是放在了最后, 剩下的元素再次形成堆3 删除vector 最后一个元素 pop_back 或者 numsv.erase(numsv.end()-1);4 sort_heap 必须在一个堆上进行操作 不是堆的话 使用会出错/*stl 的make数组是基于数组的在数组的基...原创 2019-03-22 20:41:47 · 568 阅读 · 0 评论 -
STL sort函数--对map按值排序
问题:要对以map中的数据进行按value排序难点:map中的数据是按照key排序的,用for循环进行迭代器输出的顺序,就是按照key排序的顺序。但是按value排序就不可能了。方案:STL中的sort函数原型:#include <algorithm>using namespace std;template <class RandomAccessIterator>...转载 2019-03-19 21:33:28 · 7758 阅读 · 0 评论 -
c++ STL merge 合并两个vector 并排序
找出合并之后的中位数 double findMedianSortedArrays(vector&lt;int&gt;&amp; nums1, vector&lt;int&gt;&amp; nums2) { vector&lt; int &gt; merged; merge( nums1.begin(), nums1.end(),原创 2019-02-02 23:05:24 · 4540 阅读 · 0 评论 -
ios::sync_with_stdio(false)详解
转自: https://blog.csdn.net/qq_33248299/article/details/52144485在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。...转载 2018-08-08 17:33:26 · 37207 阅读 · 0 评论