随笔分类 - c++
1
摘要:写在前面 内存泄漏问题:也就是我们常说的动态内存分配。在程序员手动进行堆空间的分配时(指针无法控制所指堆空间的生命周期),往往在写完程序的时候,很容易会忘了释放已经手动分配的内存大小,导致软件Bug不断(也就是内存泄漏)。 在C++语言里面没有垃圾回收的机制(不像高级语言Java有自动的垃圾回收机制
阅读全文
摘要:1. string转int类型 采用标准库cstdlib中atoi函数,<cstdlib>是C++里面的一个常用函数库 #include<cstdlib> string str = "55"; int tmp = std::atoi(str.c_str()); 2.内置类型转string 比如:in
阅读全文
摘要:6位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned long:
阅读全文
摘要:1. string的构造函数 string str1; //生成空字符串 string str2("123456789"); //生成"1234456789"的复制品 string str3("12345", 0, 3);//结果为"123" string str4("012345", 5); //
阅读全文
摘要:1.需要引入的头文件不同 map: #include < map > unordered_map: #include < unordered_map > 2.内部实现机理不同map:内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此ma
阅读全文
摘要:一个lambda表达式用于创建闭包。lambda表达式与任何函数类似,具有返回类型、参数列表和函数体。与函数不同的是,lambda能定义在函数内部。lambda表达式具有如下形式: [capture list] (parameter list) -> return type {function bo
阅读全文
摘要:写在前面:说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并
阅读全文
摘要:写在前面:函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时也被称为通用编程。由于类型是用参数表示的,因此模板特性有
阅读全文
摘要:写在前面:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 C++ 引用 vs 指针 引用很容易与指针混淆,它们之间有三个主要的不同: 不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能
阅读全文
摘要:写在前面: 1.C++中的全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 2.C++中,在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用。
阅读全文
摘要:写在前面:在C++中,我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。 我们不能把静态成员
阅读全文
摘要:一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort (RandomAccessIterator fir
阅读全文
摘要:正文 容器是一种容纳特定类型对象的集合。C++的容器可以分为两类:顺序容器和关联容器。顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的。标准库定义了三种顺序容器的类型:vector、list和deque(双端队列)。此外,标准库还提供了三种容器适配器:stack、queue和p
阅读全文
摘要:程序的内存分配: 一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) : 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。注意它与数据结
阅读全文
摘要:写在前面:每个程序在执行时都会占用一块可用的内存空间,用于存放动态分配的对象,此内存空间称为自由存储区或堆。 一.new和delete用法 int *pi=new int; int *pi=new int(); int *pi=new int(1024); 第一行这个new表达式在自由存储区中分配创
阅读全文
摘要:正文 迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只有少数容器(如vector)支持下标操作访问容器元素。 一.定义和初始化 每种容器都定义了自己的迭代器类型,如vector: vecto
阅读全文
摘要:正文 vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型。vector的对象是可以动态生长的,这说明它在初始化时可以不用指定大小,而是在使用时根据元素所需的空间动态增长。下面简单介绍一下vector容器的使用和操作。 一.声明和初始化 使用vector之前必须在程
阅读全文
摘要:写在前面:string是C++标准库最重要的类型之一,string支持长度可变的字符串,其包含在string头文件中。 一.声明和初始化 声明前必须在头文件中包含<string>标准库: string s1; //声明一个string对象 string s2[10]; //声明一个string对象的
阅读全文
摘要:写在前面:字符是单个的,字符串一般有多个,但也可以是单个,甚至可以是空的 char c; c = 'a'; //字符a,注意使用单引号 c = "a'; //出错!“a”使用的是双引号,代表是字符串,而c是字符类型 string c="abcd"; string c1="a";单个字符,但是双引号
阅读全文
摘要:写在前面:如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,C++ 编译器和 文本编辑器。 1.C++ 编译器 写在源文件中的源代码是人类可读的源。它需要"编译",转为机器语言,这样 CPU 可以按给定指令执行程序。 C++ 编译器用于把源代码编译成最终的可执行程序。 大多数的
阅读全文
1

浙公网安备 33010602011771号