![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 53
莫能长老
一只辣鸡程序猿(等水平高了就改掉简介)
展开
-
关于const类型unique_ptr转换成非const
将const类型unique_ptr转换成非const类型。原创 2023-06-20 15:01:25 · 258 阅读 · 0 评论 -
C++中std::memset函数的注意点
mem开头的C++STL库函数可能会导致core或内存泄露。原创 2022-12-20 09:40:08 · 673 阅读 · 1 评论 -
C++复习(十二):C++11之函数式编程——lambda表达式、函数指针、函数对象、function、bind
一、lambda表达式本文lambda表达式的使用主要参考https://www.cnblogs.com/pzhfei/archive/2013/01/14/lambda_expression.html,后面添加了一些其他内容。简介C++11引入了和python一样的lambda表达式,也叫匿名函数、lambda函数,能够实现在函数内定义函数。Lambda表达式具体形式如下:[capture](parameters)->return-type{body}具体使用lambd原创 2020-09-09 23:32:34 · 900 阅读 · 0 评论 -
C++复习(十一):STL库之list
之前list这个容器漏写了,后来很长时间没写博客,今天有时间,补一下。list底层是双向循环链表,因此不支持随机访问,但对于插入和删除能做到O(1)的复杂度,且插入和删除不会使迭代器失效。(PS:vector的插入删除应该会使迭代器失效;deque只有在删除头尾元素时使该元素对应的迭代器失效,其他的插入删除情况会使所有迭代器失效)1、构造和赋值#include<iostream>using namespace std;//构造list<int> L1; .原创 2020-09-06 21:17:39 · 1909 阅读 · 0 评论 -
辣鸡算法(五):前缀和+哈希表优化
这两天做LeetCode,总是做到“前缀和”相关的题目,发现了新大陆,在此记录一下这个东西。什么是前缀和?对一个长度为n的序列nums,将它前i个值求和,得到一个大小为n的pre数组,这个数组记录的就是前缀和。上面这个定义是我自己写的,显然,这个定义是狭义的。从广义上来讲,将序列的前i个值进行任意的函数操作都可以看做是前缀和。记上面提到的函数为int f(vector<int>& pre, int i),则pre[i]=f(i)。对于将前i个值求和的做法,f函数如下所原创 2020-05-20 21:15:08 · 1034 阅读 · 1 评论 -
C++小知识(二):随机数
伪随机数C++中用rand()产生一个随机数,这个函数在头文件stdlib.h或cstdlib中。rand() 返回一随机数值的范围在 [0, RAND_MAX] 间。RAND_MAX是个宏定义,至少为0x7fff,即32767。直接调用rand()产生的是伪随机数。它的默认种子是1,第一个产生的数必定是41。种子是用来生成第一个随机数的初始数值。真·伪随机数设置种子时,使用系统时钟作为随机数种子,如下所示。srand((unsigned int)(time(NULL))) .原创 2020-05-20 16:52:33 · 362 阅读 · 0 评论 -
辣鸡算法(二):二分查找
以前呢,二分查找总是不太会。肯定有人想说二分法有什么不会的,弄个left和right表示数组两边的端点位置,然后每次,看哪个要查找的点在left和mid中间,还是再mid和right中间,根据这个改变left或mid的值就好了。那么问题来了,我原来写的时候总是出现各种错误,不知道初始化还是,不知道用还是,不知道还是,不知道查找不到的情况怎么办,也不知道循环里面或外面访问会不会越界。每次看别人写的代...原创 2020-04-30 22:43:13 · 486 阅读 · 0 评论 -
C++复习(十):比较函数的书写
正常写法struct student{ int score1; int score2;};//若返回值为True则a排在b前面,否则a排在b后面。bool cmp(const student &a, const student &b){ return (a.score1 > b.score1)||((a.score1 == b.scor...原创 2020-03-02 23:17:29 · 281 阅读 · 0 评论 -
C++复习(九):STL库之map、multimap、unordered_map、unordered_multimap
这个空着之后写,反正和set差不多,主要是map特有的key和value相关的东西。原创 2020-03-02 23:07:45 · 516 阅读 · 0 评论 -
C++复习(八):STL库之set、multiset、unordered_set、unordered_multiset
set表示一个排好序的集合,其包含的元素是唯一的,set中的元素会自动排序,不能直接修改它的元素值。set的底层数据结构是红黑树的变体,插入和删除操作比vector快。multiset和set差不多,但set每个元素值只能出现一次,而multiset中同一值可以出现多次。unordered_set表示一个不排序的结合,其包含的元素时唯一的,unordered_set中的元素不会自动排序...原创 2020-03-02 23:05:03 · 1503 阅读 · 0 评论 -
C++小知识(一):关于不同基本类型的最大最小值,和求数组的最大最小值及其下标
一、int型,double型等最大最小值:int型最大最小值:包含在头文件<limits>或者<limits.h>中#include<limits>INT_MAX //int型最大值,即2147483647INT_MIN //int型最小值,即-2147483648也可以不用头文件,自己用宏定义#define INT_MAX 0x7f...原创 2020-02-27 17:38:08 · 1690 阅读 · 0 评论 -
C++复习(七):Volatile关键词深度剖析
背景 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile关键词在多线程编程中存在的问题、Volatile关键词与编译器/CPU的关系、C/C++ Volatil...转载 2020-02-18 12:21:28 · 182 阅读 · 0 评论 -
C++复习(六):C++11之auto关键字
C++98 auto早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期:int a = 10; //拥有自动生命期auto int b = 20; //拥有自动生命期static int c = 30; //延长了生命期C++98中的au...转载 2020-02-18 11:46:25 · 162 阅读 · 0 评论 -
C++复习(五):浅拷贝和深拷贝
深拷贝与浅拷贝简单的来说,【浅拷贝】是增加了一个指针,指向原来已经存在的内存。而【深拷贝】是增加了一个指针,并新开辟了一块空间让指针指向这块新开辟的空间。【浅拷贝】在多...转载 2020-02-17 21:30:45 · 142 阅读 · 0 评论 -
C++复习(四):左值、右值、左值引用,C++11右值引用、move、forward,以及使用emplace_back代替push_back
参考文献:C++11右值引用、move, 以及使用emplace_back代替push_backhttps://blog.csdn.net/zzhongcy/article/details/86747794c++11 之emplace_back 与 push_back的区别https://blog.csdn.net/p942005405/article/details/847...原创 2020-02-17 20:34:47 · 220 阅读 · 0 评论 -
C++复习(三):STL库之deque、stack、queue、priority_queue容器
本文主要参考https://blog.csdn.net/weixin_34128839/article/details/91686932queue,stack是基于deque实现的,都是顺序容器,支持随机访问。priority_queue是基于vector实现的,底层数据结构是堆。list的本质是一个双向链表,内存空间不连续,通过指针进行操作。deque是一个double-ended......原创 2020-02-07 20:42:35 · 537 阅读 · 0 评论 -
C++复习(二):STL库之string
主要参考http://c.biancheng.net/view/400.html1、构造和赋值#include<iostream>#include<string>using namespace std;string s1(""); // 值为""。不要写成string s1();这样没法直接赋值。可以写成string s1;值同样为""。string ...原创 2020-02-03 22:48:28 · 284 阅读 · 0 评论 -
辣鸡算法(一):大数相加,相乘,求幂并取模
当计算值有可能超过int最大取值2147483647时,oj题一般会要求取模。(这里的最大取值基于int为32位整型)不妨先定义个mod//这里mod取常用的10^9+7#define mod 10000000071、大数相加#include<iostream>#include<vector>using namespace std;vector...原创 2020-02-02 21:59:10 · 1290 阅读 · 0 评论 -
C++复习(一):STL库之vector容器
vector可以看做一个顺序容器,它支持随机访问迭代器。1、构造和赋值#include<iostream>#include<vector>#include<string>using namespace std;//以下int,string等可替换成其他类型,若类型为struct和class时可能还需考虑操作符重载vector<int&...原创 2020-02-02 00:26:55 · 1117 阅读 · 0 评论