C++
文章平均质量分 80
稚与
这个作者很懒,什么都没留下…
展开
-
C++11/14/17常用新特性
nullptr&NULL传统C++把NULL(void* or int)和0视为同一种东西,引发了很多问题。C++11引入nullptr,其类型为nullptr_t,可以隐式转化为任何指针类型,可以和0完全区别开。结论:空指针无脑使用nullptrconstexpr&const传统C++中const为常数,区别于常量表达式。带来的一些麻烦,比如不能用于初始化数组长度。C++11引入constexpr,可以显示声明常量表达式。常量表达式的值一定在编译期计算出也可以修饰函数,表示原创 2022-03-01 15:14:31 · 831 阅读 · 0 评论 -
左值/右值引用&移动/拷贝&完美转发
左值引用&右值引用我一度认为是否会用左值/右值引用能够判断出一个人是否了解modern C++左值:理解为等号左边的值(能取地址)右值:理解为等号右边的值,即表达式结束后不再存在的临时对象(不能取地址),比如常量表达式,函数返回值,和存在寄存器中的临时值等纯右值:纯粹的字面量,比如非引用的返回值、表达式(包括lambda)等将亡值:可以被移动的临时值(第一次看到可能比较难理解,不妨先往后看)引用:一个变量的别名(没去了解过底层原理,感觉像是指针的某种高级封装)对引用的操作就相当于对原创 2022-03-01 15:12:41 · 816 阅读 · 0 评论 -
C++中的多线程问题
进程和线程进程和线程的关系应用程序>程序=进程>线程一个应用程序(APP)可以有多个进程,彼此相互独立。一个进程可以开启多个线程,相当于是分工完成进程任务。比如一个辅瞄程序是一个进程,完成辅瞄过程中的所有任务;(辅瞄代码中的)相机任务是一个线程,只负责从相机(或本地视频)读取视频流,供其他线程使用。进程和线程的区别各个进程拥有独立的虚拟地址空间,也就是说进程间的数据相互隔离,不能直接访问。同一进程的各个线程共享同一个虚拟地址空间,也就是一个线程可以直接访问另一个线程中的变量(如果知原创 2021-09-25 19:03:40 · 1685 阅读 · 0 评论 -
c++中的比较函数
比较函数在用c++ code的时候经常会用到比较函数cmp(比如sort和priority_queue),在此做个总结。SORTsort(num.begin(), num.end(), cmp);方法一:自定义cmp函数sort方法中默认的运算是a<b,小于则True,否则False。在默认的逻辑中,小的元素排在前面。在自定义排序操作时,同样有返回True的时候表示a比b“小”,返回False的时候表示a比b“大”。如下例所示,如果返回的表达式是a>b,则表示在当前的逻辑中,a&g原创 2021-08-28 15:03:12 · 6360 阅读 · 0 评论 -
C++中的&
引用变量C语言和C++均使用&符号表示变量的地址。而C++赋予了&一个引得含义,即将其用来声明引用。int & num1 = num2;上例即是一个”引用“,表示num1和num2指向相同的值和内存单元。这一点可以和指针对比来看。int*是指向int的指针,int&是指向int的引用,区别在于指针分配的内存和源变量不同。#include<iostream>using namespace std;int main(){ int num1原创 2020-07-06 22:09:50 · 5063 阅读 · 1 评论