
C++
lMonster81
淡泊以明志,宁静以致远
展开
-
new和malloc的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2 voi转载 2017-10-09 09:48:50 · 254 阅读 · 0 评论 -
智能指针share_ptr实现
share_ptr:可以共同指向同一个空间,采用计数表示目前有多少share_ptr指向它,当计数为0时,我们才释放这一块空间。代码简单实现:#include<iostream>using namespace std;template<typename T>class SharePtr{ private: T *ptr...原创 2019-03-18 18:33:24 · 332 阅读 · 0 评论 -
C++ pragma指令常见用法
#pragma指令可以让编译器执行某些特殊操作。这条指令对非常大的程序或需要使用特定编译器的特殊功能的程序非常有用。#pragma指令的一般形式为:#pragma para其中,para为参数。常见用法:一:#pragma message("xxx")在编译的时候打印出""中的消息,只会在编译显示,不会出现在最终的程序中。可以用该指令检测某个宏定义是否定义过...原创 2019-03-21 17:51:29 · 700 阅读 · 0 评论 -
C++关键之explicit的使用
在C++中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。注意:只有一个参数的构造函数,或者构造函数有n个参数,但有n-1个参数提供了默认值,这样的情况才能进行类型转换。...转载 2019-03-21 17:13:50 · 134 阅读 · 0 评论 -
C++模板typename和class关键字的区别
我们都知道,在STL中基本上都使用了模板类的声明,即template。在模板类的声明中,我们有两种方式:template <class T>template <typename T>在这里,class和typename是相同的。也就是说,在声明一个template type parameter(模板类型参数)的时候,class和typename意味着完全相同的...转载 2019-03-21 17:10:45 · 265 阅读 · 0 评论 -
2019.2.23VScode的c++配置详细方法
根据个人经验,最新的c++配置方法。 主要的步骤:安装Vscode 在Vscode类安装c++插件 安装编译调试环境 修改Vscode配置文件。安装Vscode的步骤省略如何配置Vscode中文,百度有很多。Vscode的设置基本都是按照设置中文的这种步骤来的。在Vscode内安装插件选择第五个(扩展)在搜索框内搜索C++会出现一堆与C++相关的插件...原创 2019-02-23 19:48:56 · 2563 阅读 · 1 评论 -
STL容器-deque-双端队列
注明:全部来自转载,供自己学习与复习使用 deque双向开口可进可出的容器我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去deque却可以,它创造了内存连续的假象.其实deque由一段一段构成 ,他是分段连续,而不是内存连续 当走向段的尾端时候自动跳到下一段 所以支持迭代器++ 操作,自动跳到下一段的方法由operator++实现deque每次扩充 申请一个...转载 2018-12-25 22:50:50 · 334 阅读 · 0 评论 -
C++ sizeof和strlen的区别
1.sizeof:(摘自百度) sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或...原创 2018-12-17 18:27:50 · 230 阅读 · 0 评论 -
C/C++常考基础面试题(更新)
题目来自牛客网解析部分来自牛客网https://www.nowcoder.com/4685265一分析下面代码有什么问题?void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );}答案:字符串str1需要11个字节才能存放下(包括末尾的’\0’),...原创 2018-12-13 00:49:22 · 259 阅读 · 0 评论 -
C++stl中vector的几种常用构造方法
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include<stack>#include<bitset>#i原创 2018-11-26 22:45:42 · 744 阅读 · 0 评论 -
C++11的for循环的新用法
字符串string str = "this is a string"; for(auto ch : str) cout << ch << endl;等价于for(int i = 0; i < str.size(); i++) cout << str[i] << endl; vecto...原创 2018-11-26 22:31:25 · 436 阅读 · 0 评论 -
C++ string.size的返回值和unsigned int与int进行比较(string.size()与int进行比较)
unsigned int 可以和 int进行比较但是比较前unsigned int要先转换为int所以有可能结果非预期结果 而string.size()的返回值为unsigned int。所以可能出现下面的情况int main(){ string s = "abcde"; int x = -1; cout << (x > s.s...原创 2018-10-09 20:53:06 · 2016 阅读 · 0 评论 -
C++中string类下的begin,end,rbegin,rend的用法
C++ primer (中文版第四版)第273页9.3.2 begin和end成员 begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示。这两个迭代器通常用于标记包含容器中所有元素的迭代范围。c.begin() 返回一个迭代器,它指向容器c的第一个元素c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置c.r...转载 2018-10-17 23:20:16 · 8403 阅读 · 0 评论 -
c++ string的构造函数
a) string s; //生成一个空字符串s b) string s(str) //拷贝构造函数 生成str的复制品 c) string s(str, stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值 d) string s(str, stridx, strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值 ...转载 2018-10-17 23:20:26 · 4551 阅读 · 0 评论 -
浅谈C/C++排序函数中cmp()比较函数的写法
首先,我们来谈谈大名鼎鼎的void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));它属于C语言标准库函数,应该是运用最多的了,今天我不是来教你们怎么用qsort的,只是来交流一下排序函数的最后一个参数cmp()(它不仅可以叫cmp,你还可以给他取名叫什么pig啊dog的只要是英文单词都可...转载 2018-09-27 21:13:38 · 543 阅读 · 0 评论 -
C++ 之 Pair详解
本文地址:http://www.cnblogs.com/archimedes/p/cpp-pair.html,转载请注明源地址。 C++pair类型标准库类型--pair类型定义在utility头文件中定义1、pair的创建和初始化pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对...转载 2018-09-27 15:29:20 · 396 阅读 · 0 评论 -
位运算与位运算的常见用法
一 & 与运算当都为1时,才为11.保留指定位置int a=0x0111;int b=0x0010;a=a&b; //a : 0x0010 2.判断奇数偶数0为偶,1为计int a=2;int b=1;a=a&1;// a: 0 偶数值为0 b=a&1;//b : 1 奇数值为1二 | 或运算当都为0时,才...原创 2018-09-26 21:55:09 · 786 阅读 · 0 评论 -
结构体内存对齐原则
1.结构体对齐含义Ø 结构体的存储结构Ø 结构体的总大小(sizeof)2.结构体对齐原则Ø 结构体是按照成员定义顺序存储的Ø 结构体第一个成员从offset为0的地址开始存储Ø 成员存储起始地址必须满足:min(“成员自身类型的模数”,“#pragam pack(x)”) 的整数倍,否则补齐直到满足Ø 结构体的总大小必须满足:min(“结构体内部最大成员模数”," #pragam pa...转载 2018-03-23 12:35:39 · 223 阅读 · 0 评论 -
C++ 四种cast常用法及比较
static_cast用法:static_cast < type-id > ( expression )1.用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。2.用于基本数据类型之间的转换,如把int转换成char,把int转换成e...原创 2019-03-25 18:56:34 · 2031 阅读 · 0 评论