C++知识点
文章平均质量分 96
虚心学习进步
主学C++、linux、网络编程
展开
-
leetcode做题知识点记录(C++)
1. 将int转成string:string to_string(int _Val);string to_string(unsigned int _Val);string to_string(long _Val);string to_string(unsigned long _Val);string to_string(long long _Val);string to_string(unsigned long long _Val);string to_string(float _V...原创 2020-10-07 18:23:08 · 170 阅读 · 0 评论 -
C++ leetcode语法
https://blog.csdn.net/qq_37941471/article/details/82107077原创 2020-02-19 22:27:54 · 309 阅读 · 0 评论 -
static用法总结
一、C语言中。有两种(1)静态局部变量void fun1(){ static int n=100; n=200;//下次进入fun1()时,由于n已经分配好,n值为200不变}(2)用在文件级别(函数体外),修饰变量或者函数,表示该变量只在本文件可见,其他文件看不到也访问不到该变量或该函数。专业说法叫做"Internal linkage"比如:a.cpp...原创 2018-08-28 08:45:29 · 702 阅读 · 0 评论 -
C++ vector 实现二维数组
简介 在STL中Vector这一容器,无论是在封装程度还是内存管理等方面都由于传统C++中的数组。本文主要是关于使用Vector初始化、遍历方面的内容。其他二维的思想也是类似的。这里简单叙述一下C++ 构建二维动态数组int **p;p = new int*[10]; //注意,int*[10]表示一个有10个元素的指针数组for (int i = 0; i < 10;...转载 2018-08-28 08:45:02 · 589 阅读 · 0 评论 -
剑指offer面试题43 1~n整数中1出现次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。设计思想一:最容易想到的:每次对10求余,判断个数是否为1,再将原...原创 2018-08-26 19:41:47 · 196 阅读 · 0 评论 -
sprintf()用法
C++中 sprintf函数的用法1.常用方式 sprintf函数的功能与printf函数的功能基本一样,只是它把结果输出到指定的字符串中了,看个例子就明白了:例:将”test 1 2”写入数组s中#include<stdio.h>int main(int argc, char *avgv[]){ char s[40]; sprintf(s,"%s%...转载 2018-07-28 15:04:44 · 1288 阅读 · 0 评论 -
标准C函数的一些字符串与整型、浮点型的转换
atof(将字符串转换成浮点 型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符 串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,...转载 2018-07-28 16:53:22 · 143 阅读 · 0 评论 -
c++中的string系列--string与整型或浮点型互转
教科书中很少会提到string与int或是float的相互转换,但是在实际工程中会经常遇到,尤其在做UI控件显示的时候。比如说你要在edit控件中显示一个数值,那你就需要把这个数值首先转为string,然后再将这个string付给edit控件。网上你会找到很多的转换方法,个人觉得效率差不多的情况下,简洁最好。这里主要用到的是stringstreams:stringstream 是 C+...转载 2018-08-28 09:01:17 · 699 阅读 · 0 评论 -
C语言中sscanf()用法
函数原型int sscanf( const char *, const char *, ...);int sscanf(const char *buffer,const char *format,[argument ]...);buffer存储的数据format格式控制字符串argument选择性设定字符串sscanf会从buffer里读进数据,依照format的格式将数据写入到a...转载 2018-07-29 08:49:17 · 2042 阅读 · 0 评论 -
面试---指针和引用的区别
一、指针和引用的定义和性质区别:(1) 指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元...转载 2019-01-26 15:11:28 · 824 阅读 · 0 评论 -
C 字符数组与字符串的使用及加结束符'\0'的问题
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '...转载 2018-06-17 20:22:25 · 1671 阅读 · 0 评论 -
C++常见面试笔试题
https://www.cnblogs.com/aduck/articles/2272248.htmlhttps://www.cnblogs.com/guozw/p/8732473.htmlhttps://blog.csdn.net/owen7500/article/details/526930112018.8.21 今天做题时候发现:无符号数最好别直接和0这样的常数直接比,比如if...原创 2018-09-15 08:54:36 · 9435 阅读 · 1 评论 -
空类大小
1、为何空类的大小不是0呢?为了确保两个不同对象的地址不同,必须如此。类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址。同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了。所以,空类的sizeof为1,而不是0.2、请看下面的类:class A{ virtual void f(){} };class B:pub...转载 2018-08-28 08:44:56 · 176 阅读 · 0 评论 -
C++中 overload 、override、overwrite 之间的区别
Overload 重载在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;请注意,重载解析中不考虑返回类型,而且在不同的作用域里声明的函数也不算是重载。重载可以理解为一个类内部的函数重载,较好理解,此处不举例。Override 覆盖是指派生类...原创 2018-08-28 09:00:49 · 8073 阅读 · 2 评论 -
String类的普通构造函数,拷贝构造函数,赋值运算符,析构函数,不等号运算符、[]、+、流运算符重载
#ifndef _STRING_H_#define _STRING_H_#include <iostream>using namespace std;class String{public: String(const char* str = ""); String(const String& other); String& operator=(co...原创 2018-08-28 08:45:21 · 423 阅读 · 0 评论 -
STL中heap相关函数的用法:make_heap,push_heap,pop_heap,sort heap
本文介绍如何使用STL里的heap(堆)算法。第一次接触heap这种数据结构是在大学的数据结构教材上,它是一棵完全二叉树。在STL中,heap是算法的形式提供给我们使用的。包括下面几个函数: make_heap: 根据指定的迭代器区间以及一个可选的比较函数,来创建一个heap. O(N) push_heap: 把指定区间的最后一个元素插入到heap中. O(logN) p...转载 2018-07-26 16:47:11 · 3467 阅读 · 1 评论 -
C++不同数据类型的取值范围(Data Type Ranges )
For 32-bit and 64-bit compilers, Microsoft Visual C++ recognizes the types shown in the table below. Note that the following type also have unsigned forms: int (unsigned int) __int8 (unsigned ...转载 2018-08-04 09:03:17 · 268 阅读 · 0 评论 -
STL:set/multiset用法详解
https://blog.csdn.net/longshengguoji/article/details/8546286集合使用set或multiset之前,必须加入头文件<set>Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。sets和multiset内部以平衡二叉树实现 1. 常用函数...转载 2018-07-27 20:37:15 · 656 阅读 · 0 评论 -
原码,反码,补码
数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。 对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机...转载 2018-09-15 13:32:29 · 138 阅读 · 0 评论 -
C++类里面的哪些成员函数是内联函数?
类定义的内联函数分为以下3种:1.隐式内联class Person{public: Person(const string &name) { Name = name; } void printName()//printName 定义在类里面是隐式内联函数 { cout << Name << endl; }private: s...原创 2018-09-05 19:37:27 · 8147 阅读 · 5 评论 -
有符号数与无符号数比较-详解
正如我们所知道的,编程语句都有很多的基本数据类型,如char,inf,float等等,而在C和C++中还有一个特殊的类型就是无符号数,它由unsigned修饰,如unsigned int等。大家有没想过,就是因为这些不同的类型,而使大家编写的看似非常正确的程序出现了预想不到的错误呢? 一、迷惑人的有符号下无符号数的比较操作废话不多说,马上来看一下例子,让你先来体验一下这个奇妙的旅程,源...转载 2018-09-05 19:26:10 · 1209 阅读 · 0 评论 -
malloc和free函数详解
http://www.cnblogs.com/hanyonglu/archive/2011/04/28/2031271.html 本文介绍malloc和free函数的内容。 在C中,对内存的管理是相当重要。下面开始介绍这两个函数: 一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该...转载 2018-09-08 20:05:18 · 268 阅读 · 0 评论 -
C++智能指针 shared_ptr,unique_ptr和weak_ptr
c++中使用new在堆上创建的对象,必须使用delete进行销毁,否则就会内存泄漏。有时候你会不经意间忘记了delete。就算你没有忘记delete,而程序在delete之前出现异常,那就会造成delete语句没有执行。如下:int* pi = new int(10);//doSomethingdelete pi;如果doSomething出现了异常,就会造成delete pi不能执...转载 2018-08-29 16:39:38 · 208 阅读 · 0 评论 -
构造函数和析构函数里可否抛出异常的问题
C++ 用异常使得可以将正常执行代码和出错处理区别开来。 比如一个栈,其为空时,调用其一个pop 函数,接下来怎么办? 栈本身并不知道该如何处理,需要通知给其调用者(caller),因为只有调用者清楚接下来该怎么做。 异常,就提供了一个很好机制。 但是异常需要操作系统,编译器,RTTI的特性支持。下面围绕一个问题 “为什么析构函数不能抛出异常?” 展开C++中异常的实现。Effective...转载 2018-08-29 16:33:40 · 2450 阅读 · 0 评论 -
C++面试知识点总结(二)
一、extern关键字作用 1. extern修饰变量的声明。 如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。extern int v可以放在a.c中的任何地方 2. extern修饰函数声明。 如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就...原创 2018-08-28 08:44:25 · 82 阅读 · 0 评论 -
C++的静态绑定与动态绑定
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:class B { } cla...转载 2018-08-24 14:32:18 · 99 阅读 · 0 评论 -
const关键字作用
const关键字const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着“只读”readonly规则:const离谁近,谁就不能被修改;const修饰一个变量,一定要给这个变量初始化值,若不初始化,后面就无法初始化。本质:const在谁后面谁就不可以修改,const在最前面则将其后移一位,二者等效...转载 2018-08-24 14:32:23 · 521 阅读 · 0 评论 -
C++中sort()函数用法
做项目的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。sort是STL中提供的算法,头文件为#include<algorithm>以及using namespace std; 函数原型如下:? 1 ...转载 2018-08-24 18:11:51 · 2812 阅读 · 0 评论 -
堆和栈区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配...转载 2018-08-17 10:33:58 · 305 阅读 · 0 评论 -
设计模式C++实现(1)——工厂模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创...转载 2018-08-26 16:49:05 · 106 阅读 · 0 评论 -
atexit函数
很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个函数...转载 2018-07-31 22:08:13 · 128 阅读 · 0 评论 -
STL:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理。它们可根据key的排序准则自动将元素排序。multimap允许重复元素,map不允许重复元素。 map和multimap内部的数据结构也是平衡二叉树。 map和multimap根据元素的key...原创 2018-07-27 20:31:16 · 2987 阅读 · 1 评论 -
C++中const和#define区别
https://blog.csdn.net/yingyujianmo/article/details/51206460C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程...原创 2018-09-03 08:32:55 · 958 阅读 · 0 评论 -
new/delete和malloc/free的区别
https://blog.csdn.net/Hackbuteer1/article/details/6789164相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数...转载 2018-09-03 08:31:39 · 417 阅读 · 0 评论 -
C++中左值和右值的定义
在C++中的区别:简言之:变量是左值,可以出现在赋值语句的左边;数字字面值是右值,不能出现在赋值语句左边详细:左值可以出现在赋值语句的左边或者右边,即,左值也可以当右值用,右值只能出现在赋值的右边,、左值表示程序有特定的名字引用到这个值,右值表示程序中没有特定的名字引用这个值。 变量是左值,因此可以出现在赋值语句的左边;数字字面值是右值,因此不能被赋值。实际上,左值是一个存储地址,是一块内存...原创 2018-04-25 18:22:52 · 1248 阅读 · 0 评论 -
顶层const和底层const
https://blog.csdn.net/qq_19528953/article/details/50922303一 如何区分顶层const和底层const指针如果添加const修饰符时有两种情况:1 指向常量的指针:代表不能改变其指向内容的指针。声明时const可以放在类型名前后都可,拿int类型来说,声明时:const int和int const 是等价的。声明指向常量的指针也就是底层con...转载 2018-04-25 21:00:09 · 114 阅读 · 0 评论 -
for循环中的逗号表达式
https://blog.csdn.net/hurmishine/article/details/75172761for循环在是在编程中用的比较多的循环语句了,逗号运算符在实际编程中用到的不是很多,一般就用到定义变量的时候吧,其它的地方自己不会用,用了也怕别人看不懂. 今天在别人的代码中就遇到了,为了测试它的作用,就写了如下的代码:for(int i = 5, j = 10; i, j; i--,...转载 2018-05-04 15:42:28 · 5338 阅读 · 1 评论 -
C++ Primer第五版 第四章习题答案
参考链接:https://blog.csdn.net/misayaaaaa/article/details/53786215 https://blog.csdn.net/column/details/14252.html?&page=4第四章习题答案(1-10)1:运算符优先级的问题主要记住小括号的利用、算术>关系>逻辑。求值结果为:1052:括号...转载 2018-05-04 16:18:07 · 245 阅读 · 0 评论 -
C++ Primer第五版勘误 持续更新
https://blog.csdn.net/abnerwang2014/article/details/20618531这篇文章是对 《C++ Primer 中文版第5版》 中错误的列举,会随着时间的推移持续更新1. P16:练习 1.19,“修改你为 1.4.1 节练习 1.10” 改为 “修改你为 1.4.1 节练习 1.11”2. P21:1.6 书店程序中,第5行的注释 // 保存下一条交...转载 2018-05-04 17:03:06 · 2477 阅读 · 0 评论 -
结构体字节对齐
结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地...转载 2018-09-03 08:31:28 · 674 阅读 · 2 评论