每天一点C++
文章平均质量分 50
每天总结一点,积少成多
helpburn
这个作者很懒,什么都没留下…
展开
-
每天一点C++——杂记230408
先介绍一下什么是左值,什么是右值。左值是表达是结束后仍然存在的持久化对象,可取地址,右值是表达式结束后就不再存在的临时对象,不可取地址。所有的具名变量活对象都是左值,而右值不具名。C++通过右值引用可以充分使用临时变量或者即将不使用的变量即右值资源,减少不必要的拷贝来提高效率。C++引入了右值引用&&,移动构造函数,移动赋值和std::move。原创 2023-04-08 15:39:14 · 347 阅读 · 0 评论 -
每天一点C++——C++中的强制类型转换
C/C++强制类型转换介绍原创 2022-08-06 16:04:44 · 452 阅读 · 0 评论 -
C++基础之作用域解析操作符
C++作用域解析操作符原创 2022-03-22 11:26:22 · 1673 阅读 · 0 评论 -
每天一点C++——char和string的相互转换
char转string原创 2021-10-11 15:58:41 · 210 阅读 · 0 评论 -
每天一点C++——获取multimap某个key的所有value
multimap中可以保存多个key值,介绍一下获取某一key值所有value的方法。这些方法对于multiset也是可以使用的。使用equal_range使用count统计出数量使用lower_bound upper_bound获取起止迭代器,和1类似代码:#include <iostream>#include <map>using namespace std;typedef multimap<string, string>::iterator原创 2021-10-11 15:13:07 · 3008 阅读 · 0 评论 -
每天一点C++——容器总结
对C++中的容器进行了一个简单的总结,有不正确的地方还请指正,不完整部分可以留言补充,一起进步 hia hia hia原创 2021-10-11 10:20:43 · 76 阅读 · 0 评论 -
每天一点C++——const和constexpr
C++11中添加了一个constexpr的关键字,今天简单介绍一下。const关键字我们在前面的一篇文章中已经介绍过了:https://blog.csdn.net/itlilyer/article/details/109201275const可以修饰变量、参数、返回值、函数等等,主要实现两种表达:一是这个值不可以被修改;二是这是个常量。constexpr是C++11新加入的用来表示该值在编译阶段就可以确定,可以是编译宏的值,#define的值,常量值等。看下下面的代码:#include <i原创 2021-07-29 15:25:17 · 88 阅读 · 0 评论 -
每天一点C++——多维数组的创建和初始化
使用vector来实现多维数组。已知数组大小已经知道数组大小的话可以通过下面方式来创建数组。数组int myArray[3][4];vectorstd::vector<std::vector<int>> vec(13, std::vector<int>(7, 2));未知数组大小int func(const std::vector<std::vector<int>> & data) { size_t or原创 2021-07-29 11:25:13 · 1006 阅读 · 0 评论 -
每天一点C++——怎么用智能指针管理数组
智能指针原创 2021-06-12 16:47:12 · 1905 阅读 · 1 评论 -
常见算法——单调栈
由于各种原因需要重新熟悉一下常见算法,最近一段时间写代码少,就从leetcode上找些题练练手。今天做的题目是:739.每日温度。看到这个题很容易想到单调栈。单调栈是什么呢?从字面意思很容易看出来,单调栈首先是一个栈结构,满足后进先出(LIFO),再就是从栈顶到栈底的值是逐渐递增或者逐渐递减。739的题目就不再描述了,题目链接:https://leetcode-cn.com/problems/daily-temperatures/下面是我写的第一版代码,结果是过了34个用例,第35个超时。先看下我的代原创 2021-05-05 16:06:22 · 132 阅读 · 0 评论 -
C++基础之说明符——override,final
C++11中新增了override和final说明符,下面介绍一下这两个说明符的作用。overrideoverride说明符的主要作用是说明该函数必须重载其基类中的同名函数,也就是说该函数必须重写基类的函数而且必须是基类中的虚函数,否则代码将无法通过编译。这样做的目的是什么呢?主要防止在重载的时候防止函数书写错误,例如:函数名称错误、参数不一致、返回值等等。下面看个简单的例子class A { virtual int foo(int a); int foo1(float a); virtual原创 2021-04-17 16:44:32 · 423 阅读 · 0 评论 -
C++基础之模板详解
C++中模板是泛型编程的基础,是将类型作为参数的一种编程方式。因此可以独立与特定的类型。模板顾名思义就是一个模子,举个不太恰当的栗子:做月饼的模子,样子都是一样的,但是可以做出五仁的、豆沙的、蛋黄的等等各种馅的月饼。C++中模板的应用主要分为两个场景:函数模板和类模板。下面分别介绍一下,能想到的尽量都写一下。函数模板定义方式template <typename T[,typename Q]>return_type func_name(param_list) { //函数体}te原创 2020-11-21 16:10:55 · 505 阅读 · 0 评论 -
C++基础之概念解释——重载、重写和重定义
重载(overload)重载:指在一个类的内部,具有不同的参数列表但是相同函数名的函数,不能够依靠返回值来区分。几个要点:重载必须要是同一个类里面,不涉及继承要通过参数列表区分,不能使用返回值区分重载不关注是不是虚函数函数的名字相同重写(override)重写:也叫覆盖,是针对父类中的虚函数而言,如果子类中重新定义了父类中的virtual修饰的虚函数,叫做重写。几个要点:重写是针对子类修改父类的虚函数,被重写的函数必须用virtual修饰原创 2020-11-05 15:17:45 · 799 阅读 · 0 评论 -
C++基础之关键字——virtual详解
virtualC++中的virtual关键字主要有这样几种使用场景:第一,修饰父类中的函数 ;第二,修饰继承性。注意:友元函数、构造函数、static静态函数不能用virtual关键字修饰。普通成员函数和析构函数可以用virtual关键字修饰。virtual具有继承性:父类中定义为virtual的函数在子类中重写的函数也自动成为虚函数。修饰父类中的函数修饰父类中的函数主要分为三种:普通函数、析构函数和纯虚函数。修饰父类中的普通函数被修饰的函数称为虚函数, 是C++中多态的一种实现(多说一句,多态原创 2020-11-02 16:33:15 · 31457 阅读 · 4 评论 -
C++基础之关键字——const,volatile,mutable,auto,register,static,extern
constconst表示所限定的描述符是不可变的。const主要的应用场景有修饰变量、修饰指针、修饰函数参数、修饰类的成员函数、修饰数据成员、修饰类的对象,const修饰函数返回值。下面分别说明一下:修饰变量const int a;int const a; 两种方式效果相同,都表示变量a是一个常量是不可变的。修饰指针与修饰变量类似有两种写法,但是意义不同:const int * p;int * const p;const int * const p;第一种写法意思是: 创建的指针a原创 2020-10-22 15:47:46 · 447 阅读 · 0 评论 -
C++基础之概念解释——守护进程
守护进程原创 2020-10-20 20:18:01 · 299 阅读 · 0 评论 -
C++基础之关键字——using使用详解
目前为止C++中的using关键字主要有三中使用场景,从C++ 11开始新增了第三种。下面我们分别介绍一下。指示使用某命名空间,对命名空间成员进行声明也就是说指明用哪个命名空间的成员Using-directives:指示使用某命名空间,这也是最常见的使用方法语法:attr(optional) using namespace nested-name-specifier(optional) namespace-name; attr: 应用到using的任意数量的属性,nested-name-spe原创 2020-10-14 11:02:19 · 11354 阅读 · 0 评论 -
C++基础之内存管理(一)指针——shared_ptr详解
头文件#include <memory>std::shared_ptr (C++11)模板类定义template <class T> class shared_ptr;类说明共享指针。管理一个保存指针的内存区域,提供有限的垃圾回收机制,可能会在多个对象之间共享该管理权。shared_ptr类型的对象可以取得一个指针的所有权,并且可以分享该所有权:一旦他们取得了一个指针的所有权,那么当该指针的这一组所有者中最后一个释放所有权的需要负责释放该指针。shared_ptr对原创 2020-10-07 16:24:24 · 3393 阅读 · 1 评论 -
C++基础之内存管理(一)指针——auto_ptr
头文件#include std::auto_ptr(deprecated as of c++11)模板类定义template <class X> class auto_ptr;注意:该类模板从C++ 11开始废弃了,不推荐使用。 unique_ptr是具有类似功能的新类别,而且具有更高的安全性(不是假拷贝赋值),增加了新的特性(deleters)并且支持数组。查看unique_ptr了解更多。该类模板为指针只提供有限的垃圾回收机制,当auto_ptr被销毁时,允许指针指向的元素自动原创 2020-09-05 15:11:04 · 288 阅读 · 0 评论 -
C++基础之容器——array详解
头文件:头文件中定义了固定大小的数组容器array 类和两个函数begin和end。模板类定义原型定义template < class T, size_t N > class array;类介绍数组array是一个大小固定的序列容器:容器中保存这特定数量的元素,元素按照严格的线性序列保存。在容器内部,除了容器的元素不会保存任何其他的数据(甚至大小也不保存,大小是模板类的参数,在编译时确定)。就存储大小而言它与使用括号语法([])声明的数组一样高效。这个类只是在数组的基础上添加了成原创 2020-08-05 17:06:11 · 8569 阅读 · 2 评论 -
C++基础之bitset
类模板std::bitsettemplate <size_t N> class bitset;头文件#include <bitset>说明一个bitset中保存了一些bit(字节, 只能取两个值的元素:0或1,真或假 …)bitset模拟了一个bool类型的数组,但是优化了内存空间:总的来说,每个元素值占用一个bit(比大多数系统中最小的元素char小了8倍)每个位置的都可以独立的访问:例如,给定一个bitset命名为foo,foo[3]访问的就是第四个元素,就像通常数原创 2020-07-21 20:58:50 · 3984 阅读 · 0 评论 -
C++基础之string与数字(int、long、float、doubel)之间相互转换
以下接口的头文件均为<string>1. 数字转换为string1.1 std::tostring(c++11新增)函数原型:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (uns原创 2020-07-13 14:12:54 · 9754 阅读 · 1 评论