C++ 类型推导:auto和decltype 类型推导:auto和decltypeauto基本用法使用它来做自动类型推导,可以和其他操作符(&,*,const),一般来说auto 是根据变量的初始值来推导出变量类型的,比如一些容器的迭代器完整写下来就很长,使用auto就很方便 1234567int a = 5 , b = 3;auto* pointer = &b;//和*一起用cout<<*pointer<& 2022-03-11 C++
C++ shared_ptr循环引用问题/解决方法 C++ shared_ptr循环引用问题/解决方法关于shared_ptr/weak_ptr首先可以看一下这篇文章 C++的智能指针-unique_ptr,shared_ptr,weak_ptr 循环引用问题shared_ptr存在循环引用问题: 考虑下面这样一个代码 12345678910111213141516171819class Node{public: int _data; 2022-02-24 C++
C++拷贝构造函数和operator =的区别 C++拷贝构造函数和operator =的区别起因之前感觉拷贝构造函数和operator =作用很相似,也没有细察他们的区别,今天看了一些文章实验了一下: 比如我创造了一个Base的class,我同时编写了拷贝构造函数和operator=,那么对于下面这个代码有几个疑问: 12Base a;Base b = a; Base b = a; 调用拷贝构造函数 还是 operator =呢? 是两者都可 2022-02-15 C++
C++左值右值/左右值引用/std::move() C++左值右值/左右值引用/std::move()左值/右值 左值(lvalue)是放在赋值语句左边可以被赋值的值(不是变量!),左值必须在内存中有一个确定的地址。 右值(rvalue)用来放在赋值语句右边,将自己的值取出赋给别的变量,右值没有一个确定的地址。 也可以这么理解: 左值是指表达式结束后依然存在的持久化对象 右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值 2022-02-15 C++
C++的智能指针-unique_ptr,shared_ptr,weak_ptr C++的智能指针-unique_ptr,shared_ptr,weak_ptr智能指针基本介绍和特点 C++11以后出现了智能指针这个新东西,他的出现主要是为了更方便的进行资源内存管理。程序员使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理,例如new一个对象,delete一个对象。 他的底层实现方法就是通过一个class来实现,把指针封装成了一个类。这个类的构造 2022-02-15 C++
vector容器内存释放技巧:swap() vector容器内存释放技巧:swap() .clear()方法并不会释放内存,他只会清空内容,但是容器内存依然占据着,因此我们需要用一种swap trick来解决这个问题: 下面是一个利用swap trick来修整空间的例子: 12345vector<int>v;v.push_back(1);v.push_back(2);v.push_back(3);vector& 2022-02-11 C++
RB-tree红黑树 RB-tree红黑树一些基本性质:1.根节点一定是黑色 2.所有叶子结点(叶子结点都是空节点)都是黑色 3.红色结点的两个子结点一定是黑色 4.从任一个节点,到它每个叶子结点的路径都包含相同数目的黑色节点。 红黑树插入:分三大类情况 1.被插入的节点是根节点,直接把此节点涂黑 2.被插入的节点的父节点是黑色,直接插进去并且把节点变成红色(这是因为变成红色就不会影响上述的 基本性质4) 3.被插 2022-02-09 数据结构
const关键字修饰 相关问题 const关键字修饰 相关问题const修饰问题很麻烦,一个不错的识别方式是:const默认作用于其左边的东西,否则作用于其右边的东西: 辨别方法 const int* const只有右边有东西,所以const修饰int成为常量整型,然后*再作用于常量整型。所以这是a pointer to a constant integer(指向一个整型,不可通过该指针改变其指向的内容,但可改变指针本身所指 2022-01-24 C++
Leetcode第 277 场周赛题解 5989. 元素计数不等于最大或最小元素 统计一下有多少个即可: 12345678910111213class Solution {public: int countElements(vector<int>& a) { sort(a.begin(),a.end()); int n = a.size(); int 2022-01-24 Leetcode