
C++
petition
觉知此事须躬行
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于STL中通过迭代器删除容器中的元素
// list list<int> dataList = { 1,2,3,4,5,6,7,8,9 }; for (auto iter = dataList.begin(); iter != dataList.end();) { dataList.erase(iter++);//下面这种方式也可以 //iter = dataList.erase(iter); }// map map<int, int> dataMp = { {1,2},{3,4},..原创 2021-09-21 17:15:15 · 303 阅读 · 0 评论 -
宏定义 #和 ##运算符的区别
#运算符将一个宏的参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。(一些C程序员将#操作理解为“stringization(字符串化)”;其他人则认为这实在是对英语的滥用。)#运算符有大量的用途,这里只来讨论其中的一种。假设我们决定在调试过程中使用PRINT_INT宏作为一个便捷的方法,来输出一个整型变量或表达式的值。#运算符可以使PRINT_INT为每个输出的值添加标签。下面是改进后的PRINT_INT:#define PRINT_INT(x) printf(#x " = %d\n.转载 2020-09-24 08:48:24 · 328 阅读 · 0 评论 -
函数式宏定义与普通函数的区别
尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为函数式宏定转载 2020-08-31 16:33:46 · 667 阅读 · 0 评论 -
C++ explicit关键字详解
对于VS的编译器来说,拷贝构造函数如果带explict关键字,直接编译失败转载 2020-08-31 10:18:55 · 130 阅读 · 0 评论 -
c++中nullptr
C++中为了避免“野指针”(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作。如果暂时不明确该指针指向哪个变量,则需要赋予NULL值。除了NULL之外,C++11新标准中又引入了nullptr来声明一个“空指针”,这样,我们就有下面三种方法来获取一个“空指针”:如下:int *p1 = NULL; // 需要引入cstdlib头文件int *p2...转载 2020-04-29 10:27:18 · 895 阅读 · 0 评论 -
C语言中>> 、&、|的实际用途
一、运算符的含义运算符 含义 描述 << 左移 用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0。 >> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。 l 按位或 两个...转载 2020-03-25 10:04:58 · 1373 阅读 · 4 评论 -
C++11右值引用和std::move语句实例解析
C++11右值引用和std::move语句实例解析关键字:C++11,右值引用,rvalue,std::move,VS 2015OS:Windows 10右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者...转载 2020-03-19 22:02:11 · 594 阅读 · 0 评论 -
关于#define宏定义中 ## # #@ \等的用法
C/C++ 宏命令的神奇用法。先看下面三条语句:#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #x1. ## 连接操作符##表示连接(token pasting, or token concatenation,merge two tokens into one while expa...转载 2020-03-11 15:12:26 · 1029 阅读 · 0 评论 -
c结构体初始化不写结构体变量名
定义struct InitMember{int first;double second;char* third;float four;};1234567方法一:定义时赋值struct InitMember test = {-10,3.141590,“method one”,0.25};1需要注意对应的顺序,不能错位。方法二:定义后逐个赋值struct In...转载 2020-03-11 15:09:45 · 444 阅读 · 0 评论 -
fflush(stdin)与fflush(stdout)
1.fflush(stdin):作用:清理标准输入流,把多余的未被保存的数据丢掉。。如:int main(){ int num; char str[10]; cin>>num; cout<<num<<endl; cin>>str; cout&...转载 2020-03-10 17:44:23 · 247 阅读 · 0 评论 -
glfw+glew创建窗口
最近比较闲,就学习了OpenGL的相关教程。但是在刚开始学习就出现了问题,使用glfw创建窗口时一直返回空指针,代码如下:#include <GL/glew.h>#include <GLFW/glfw3.h>#include <iostream>int main(){ glfwInit(); glfwWindowHint(GLFW_CONTEX...原创 2020-02-14 22:05:30 · 437 阅读 · 0 评论 -
tmain和main区别
_tmain()是unicode版本的的main()_tmain这个符号多见于VC++创建的控制台工程中,这个是为了保证移植unicode而加入的(一般_t、_T、T()这些东西都和unicode有关系),对于使用非unicode字符集的工程来说,实际上和main没有差别(其实就算是使用unicode字符集也未必有多大的差别)。1。 main是C程序的函数,_tmain是main为了...转载 2019-07-16 22:23:45 · 207 阅读 · 0 评论