![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法工程C++
文章平均质量分 83
C++学习笔记和踩坑记录
捡起一束光
某985本硕,热爱分享推荐系统、自然语言处理等优质内容的算法工程师
展开
-
【C++ const引用和const指针详解】 (const int *p;) (int const *p;) (int *const p;)三者的区别
const int *p;// 等价于int const *p;const 修饰的是整个*p,所以你*p不能被赋值int *const p;const 修饰的是ppi值是不能重新赋值修改了。它只能永远指向初始化时的内存地址了整个*p的前面没有const 的修饰。也就是说,*p是变量而不是常量,所以我们可以通过*p来修改它所指内存i1的值我最后总结两句:1) 如果const 修...原创 2020-02-13 18:24:20 · 4024 阅读 · 2 评论 -
【C++编程语言学习汇总】
cplusplus官网C/C++笔试必须熟悉掌握的头文件系列——无鞋童鞋的博客cmathmath.h是C语言的头文件,其实在C++中math.h也是可以用的,C++是兼容C的不过推荐使用cmath头文件,cmath是C++中对应相同作用的头文件ceil,floor等函数的头文件是cmath,而不是algorithm,看官方文档说明...原创 2019-11-03 12:20:10 · 447 阅读 · 0 评论 -
C++高频面试题:虚函数和纯虚函数(C++的三大特性:封装、继承、多态)
C++高频题学习资料一、虚函数虚函数原理(手写笔记)虚函数代码示例二、纯虚函数纯虚函数原理纯虚函数代码示例C++纯虚函数类似Python中的@abstractmethod装饰器三、相关面试题问题1:请说说虚函数和纯虚函数区别学习资料c++虚函数的作用是什么? - 心试的回答 - 知乎我们知道C++的三大特性就是封装、继承和多态。虚函数这个概念是在继承部分出现,主要就是为了实现多态机制。多态是可以用父类的指针指向子类的实例,可以直接调用子类的成员函数。这样父类就实现了多态。多态就是一个.原创 2022-04-28 09:16:10 · 1026 阅读 · 0 评论 -
C++ map按key或按value排序
map按key排序(1)map默认按照 key 从小到大排序 map<string,int> hash; 等价于 map<string,int, less<string>> hash;(2)map按照 key 从大到小排序map<string,int, greater<string> > hash;示例代码: map<string,int, greater<string>> m; // 默认 map&原创 2020-05-19 11:16:24 · 3949 阅读 · 1 评论 -
【C++ 深入浅出】int a[ ]数组和vector容器作为函数参数时加或不加引用&的区别
数组作为函数参数的说明普通数组作为函数参数;int a[5] = {1,2,3,4,5};*(a+i) <=> a[i]; // a为数组名C++数组名作为函数参数传递后,其大小信息丢失,只剩下指向数组中第一个元素的信息,这也是为什么如果在接受数组参数的函数中访问数组的各个元素,需在定义数组的域范围将数组大小作为另一辅助参数传递实际上是将数组作为指针(常量地址)来...原创 2020-02-23 09:33:25 · 2869 阅读 · 1 评论 -
C++ main函数中argc参数和argv参数解读 | Python argv exit 参数解读 | Python中 *args 和 **kwargs 的含义
文章目录int main(int argc, char *argv[])示例代码1示例代码2int main(int argc, char *argv[])argv(argument vector)是个数组,数组元素指针,指针指向字符型数据(字符串是地址常量)argc(argument count)用来告诉argv数组有多大argc指的是程序启动时命令行参数的个数argv数组则包含了具体...原创 2020-02-22 21:41:33 · 742 阅读 · 0 评论 -
【C++ 深入浅出】类的3种访问权限和3种继承方式详解
文章目录C++类的三种访问权限继承方式: 公共继承、保护继承、私有继承继承分析技巧补充:C++中class和struct的区别C++类的三种访问权限公共权限 public成员:类内可以访问,类外可以访问保护权限 protected成员:类内可以访问,类外不可以访问,子类可以访问父类的保护成员私有权限 private成员:类内可以访问,类外不可以访问,子类不可以访问父类的私有成员...原创 2020-02-21 08:14:39 · 7147 阅读 · 0 评论 -
【C++ 深入浅出】智能指针shared_ptr、unique_ptr、weak_ptr详解
智能指针:防止用户忘记释放掉指针所指的堆空间而造成内存泄漏当一个对象应该被释放时,指向它的智能指针可以确保自动地释放它手动释放空间new和delete类名 *指针名 = new 类名(参数)...delete 指针析构函数被执行才能说明内存释放成功具体实例#include <iostream>using namespace std;class Human {...原创 2020-02-19 21:20:57 · 378 阅读 · 0 评论 -
【C++ 深入浅出】C++指针运算和指针安全总结
文章目录指针的运算数组和指针的关系*(p + 4) 和 p[4]指针和结构的关系p->data; 和 (*p).data指针的安全问题指针的运算指针p可以加上或减去一个整数n,但指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,它是以单元为单位,如p指向int型整数,则一个单位是sizeof(int)(1)示例1char a[20]="You are my friend"...原创 2020-02-16 17:29:37 · 1387 阅读 · 0 评论 -
C++用clock()函数计算程序运行时间(计时) | python 用time.process_time()
C++中clock()函数可以帮助我们实现程序运行时间计算的功能clock函数定义如下:clock_t clock( void );clock_t只是一个预先用typedef取的类型别名,不要慌张CLOCKS_PER_SEC是一个预先的定义的常量,表示一秒钟会有多少个时钟计时单元函数clock()返回从开启这个程序进程到程序中调用clock()函数之间的CPU时钟计时单元数查看头文...原创 2020-02-13 20:41:48 · 1534 阅读 · 0 评论 -
【C++ 深入浅出】C++可以使用变量作为数组长度吗
首先明确一点:C++是不可以使用变量作为数组长度的那为什么有些地方的C++用了变量做数组长度,没有报错呢?那是因为这是C99标准的一部分,叫做 变长数组 即 变量长度数组,这个特性是g++编译器的扩展int n = 10;int a[n]; // Legal in g++ (with extensions), illegal in proper C++但在不是g++的编译器中这样用就会...原创 2020-02-11 20:54:14 · 10700 阅读 · 3 评论 -
【C++ 取模mod易错点】由于答案可能会很大,请你将结果对1e9+7取模后再返回
在做算法题时我们经常会遇到这样一句话:由于答案可能会很大,请你将结果对10^9 + 7取模后再返回这句话看上去只要对变量取模就可以了,但实际上取模的时机有一定的讲究,比如新手很容易犯一下两个错误错误1:用max比较很大数据时,先取模取mod的时候,如果题目要求你算最大值,并且说由于答案可能很大,输出结果请对1e9+7取,那你千万不能在max函数更新最大值时就取模,这样很可能会出错比如:题.........原创 2020-02-11 18:42:58 · 18961 阅读 · 2 评论 -
【C++ 深入浅出】如何分析 int (*p)(int); 等复杂指针类型
写在前面:我写博客主要是为了对知识点的总结、回顾和思考,把每篇博客写得通俗易懂 是我的目标,因为能让别人看懂,才是真的学会了从Math到CS的跨专业经历,让我格外珍惜学习时间,更加虚心好学,而分享技术和知识是快乐 的,非常欢迎大家和我一起交流学习,期待与您的进一步交流背景在学习C++指针时,我们经常会遇到一些比较复杂的指针类型定义,很多人可能一直是一知半解的,比如下面这10个类型,你能否...原创 2020-02-10 15:40:49 · 815 阅读 · 0 评论 -
由LeetCode C++ sort函数第三个参数cmp必须声明为static 引发的思考
写在前面:我写博客主要是为了对知识点的总结、回顾和思考,把每篇博客写得通俗易懂是我的原则,因为能让别人看懂,才是真的学会了从Math到CS的跨专业经历,让我格外珍惜学习时间,更加虚心好学,而分享技术和知识是快乐的,非常欢迎大家和我一起交流学习,期待与您的进一步交流背景你是否在刷LeetCode时出现过下面的情况?而加上static就不会报错具体解释在class类中的sort函数的......原创 2020-02-09 22:45:28 · 4792 阅读 · 10 评论 -
C++ 命名空间namespace详解
命名空间namespace官方详细文档C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围...原创 2020-02-03 14:15:52 · 393 阅读 · 1 评论 -
C++ Class对象的public/private+构造函数(C++11类成员变量初始化)+析构函数
文章目录Class对象public/private构造函数析构函数Class对象public/private#include <iostream> using namespace std;/*人类 属性 名字 年龄大小 性别 能力 走路 说话 ...*/// leetcode也是用class Solution的// class对象(属...原创 2019-11-24 10:36:01 · 3575 阅读 · 0 评论 -
C++ 输入输出进阶技巧
#include <iostream>#include <iomanip>using namespace std;int main( void ){ // left right fixed scientific setprecision setfill 具有后效性 // setw(10) 不具有后效性 // fixed和setpreci...原创 2019-07-13 17:01:01 · 348 阅读 · 0 评论 -
详细解答C++结构体内嵌比较函数 - 结构体排序 - 重载结构体符号
基本用法:struct node{ int l, r; bool operator< (const node &v)const{ return r < v.r; }} v[maxn];可以这样理解:r表示当前node的r,而v.r可以认为是下一个node的r,于是就是从小到大排序结合优先队列的用法:struct node...原创 2019-08-14 10:34:46 · 4025 阅读 · 3 评论 -
C++中malloc()和new运算符的区别
Quick introduction about new and malloc()malloc()malloc() is a library function of stdlib.h and it was used in C language to allocate memory for N blocks at run time, it can also be used in C++ pr...原创 2019-11-24 10:59:27 · 478 阅读 · 0 评论 -
c++函数重载与运算符重载
文章目录函数重载运算符重载重载:同一件事情可能因为场景不同,我们需要有不同的处理方式,比如2维求距离和3维求距离函数重载相同名字,不同参数的函数 注意:函数重载只看参数个数和类型C++允许我们对函数进行重载。用不同的参数来区分重载的函数编译器会判断我们传入的参数来寻找正确的函数,这个过程叫重载决策利用函数重载我们可以写适应不同输入的函数,简化我们的函数的调用过程重载不需要特别...原创 2019-09-26 16:53:19 · 406 阅读 · 0 评论 -
【C++ 深入浅出】template模版用法详解(类模板、函数模版)
函数模板template用法sort,swap都是函数模板,并且调用时省略了<类型>C++reference的函数大部分采用了模板形式另外template 或 template 一般没什么区别swap function template:template <class T> void swap( T& x, T& y) { T ...原创 2019-09-26 16:45:25 · 1800 阅读 · 0 评论 -
普通数组的memset函数用法详细解读
最常用的memset赋值0x3f(正无穷)0x80或128(负无穷)0-1memset函数说明头文件:C:<memory.h>/<string.h>C++:< cstring >话说刚开始使用memset的时候一直以为memset是对每一个int赋值的,心里想有了memset还要for循环对数组进行初始化干嘛。但其实memset这个函数...原创 2019-09-26 16:42:24 · 1967 阅读 · 0 评论 -
自己实现一个C++的String类
下面的String函数目前只含有创建和输出功能,后续会更新…// 2020年1月30日 星期四 21:59:30#include <iostream>using namespace std;class String {public: String (const char *cstr = ""); // 0等价于"" String (const Strin...原创 2020-01-30 22:00:50 · 459 阅读 · 0 评论 -
C++ 返回值return为引用时报错为局部变量local variable
我们来研究一下如下函数:int &func1() { int i; i = 1; return i;}错误1:这里func1里的i是局部变量,退出函数后就消失了,你引用了一个消失的变量当然会出问题错误2:参数传引用时,必须接受一个实际的变量,不然也是在引用一个临时的东西正确做法定义一个参数,接受一个main代码中的变量,并引用它代码:#in...原创 2020-01-29 15:20:02 · 1217 阅读 · 0 评论 -
C++ const修饰函数、函数参数、函数返回值的用法
前言可能有些人会对下面的const的含义,有点迷糊//11 区间排序,按右端点从大到小排序struct Range{ int l, r; bool operator< (const Range &W) const { return r < W.r; }}; 本文会带你好好理解下const在不同地方的具体含义...原创 2019-09-11 11:18:14 · 1988 阅读 · 1 评论