- 博客(22)
- 收藏
- 关注
原创 手撕练习之字符串
手撕练习之字符串一、反转字符串中的每一个单词(leetcode 151、557)二、多个字符串的最长公共前缀(leetcode 14)三、N位数字串删除K个数字,使剩下的数字串最小(leetcode 402)四、回文子串的个数(leetcode 647)五、最长无重复字符子串(leetcode 3)六、最长回文子串(leetcode 5)七、查找子串的位置(实现strStr())(leetcode 28)一、反转字符串中的每一个单词(leetcode 151、557)思路:1.利用string流输入
2020-08-11 17:17:10
396
原创 C++ primer 关联容器总结
文章目录1.顺序容器与关联容器2.关联容器的类别3.关联容器的概述3.1 定义关联容器3.2 有序容器的关键字类型要求1.顺序容器与关联容器关联容器中的元素是按关键字来保存和访问的。顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。2.关联容器的类别关联容器支持高效的关键字查找和访问。主要的关联容器类型是 map 和 set。map 中的元素是一些关键字-值对:关键字起...
2020-03-23 10:02:42
426
原创 排序算法2 (快速排序)
文章目录1.快速排序思想2.算法核心3.快速排序的问题及解决4.算法实现1.快速排序思想思想: 分而治之伪代码:void Quicksort(ElementType A[], int N){ if (N < 2) return; pivot = 从A[]中选一个主元; 将S = {A[] \ pivot} 分成2个独立子集: A1={a属于S | a <= p...
2020-03-18 21:56:54
288
原创 排序算法1(选择排序、堆排序、归并排序、递归排序和非递归算法)
文章目录1.选择排序2.堆排序3.归并排序4.递归排序算法1.选择排序时间复杂度:T(N)=O(N^2)2.堆排序对选择排序的改进。3.归并排序4.递归排序算法利用了有序子列的归并时间复杂度:T(N)=O(N logN)...
2020-03-17 22:35:17
219
原创 C++ primer 泛型算法总结
文章目录1.泛型算法概述2.初始泛型算法2.1只读算法2.2 写容器元素的算法2.3 重排容器元素的算法3.定制操作3.1 向算法传递函数3.2 lambda表达式3.2.1 向lambda传递参数3.2.2 使用捕获列表3.2.3 指定lambda 返回类型3.3 参数绑定4.再探迭代器4.1 插入迭代器4.2 iostream 迭代器4.2.1 istream_iterator 迭代器4.2....
2020-03-17 20:41:18
716
转载 C++ primer 动态内存与智能指针
文章目录一、动态内存1、了解OS的进程空间模型2、brk、mmap 系统调用3、malloc/free 是libc库函数4、new/new[]/delete/delete[]二、智能指针1、智能指针背后的设计思想2、普通指针存在的问题3、shared_ptr类(1)make_shared函数(2)shared_ptr的拷贝和赋值(3)shared_ptr自动销毁所管理的对象(4)使用动态内存的原因...
2020-03-12 22:04:00
162
原创 C++ primer 顺序容器总结 (STL 顺序容器)
1.顺序容器类型2.顺序容器的定义和初始化3.顺序容器的操作3.1【插入操作】3.2【访问操作】3.3【删除操作】3.4【改变容器大小】对于forward_list的操作...
2020-03-07 12:51:43
227
转载 C++ priority_queue(STL priority_queue)用法详解
不出所料,priority_queue 容器适配器定义了一个元素有序排列的队列。默认队列头部的元素优先级最高。因为它是一个队列,所以只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理。但是如何定义“优先级”完全取决于我们自己。如果一个优先级队列记录的是医院里等待接受急救的病人,那么病人病情的严重性就是优先级。如果队列元素是银行的借贷业务,那么借记可能会优先于信贷。priority_q...
2020-02-28 11:08:41
498
转载 C++ queue(STL queue)用法详解
只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。图 1 展示了一个 queue 容器及其一些基本操作:queue 定义queue 的生成方式和 stack 相同,下面展示如何创建一个保存字符串对象的 queue:std::queue<std::string> words;也可以使用拷贝构造函数:std::queue...
2020-02-27 16:46:56
1550
转载 C++ stack(STL stack)用法详解
C++ stack(STL stack)用法详解容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。stack<T>容器适配器中的数据是以 LIFO 的方式组织的,这和自助餐馆中堆叠的盘子、箱子中的一堆书类似。图 1 展示了一个理论上的 stack 容器及其一些基本...
2020-02-27 16:01:35
1325
转载 C++四种强制转换
C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast。 为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。 C+...
2020-02-18 15:05:30
358
原创 C++迭代器总结
迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。迭代器的类型及定义迭代器的类型有iterator和const_iterator.const_iterator 能读取但不能修改它所指的元素值。相反,iterator的对象可读可写。...
2020-02-16 13:42:08
211
原创 C++ string类的用法总结
String类:按照类的方式进行动态管理字符串底层:是一种顺序表的结构,元素是char类型的字符string类的常用构造函数://用法小实例#include<iostream>using namespace std; int main() { string s1; //空字符串 string s2(10,'$'); //十个 $ string s3("hel...
2020-02-15 11:09:16
450
原创 C++面向过程部分的问题解答
写一个交换两个数据的宏?#define SWAP(a,b) ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a))
2020-02-12 11:49:02
210
原创 static关键字的作用和在C++中的作用
【static关键字的作用】全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。局部静态变量在局部变量之前加上关键字static,...
2020-02-11 17:50:50
202
原创 const的作用和用法
一、const的作用1.为给读你代码的人传达非常有用的信息,声明一个参数为常量是为了告诉用户这个参数的应用目的;2.通过给优化器一些附加信息,使关键字const也许能产生更紧凑的代码;3.合理使用关键字const可以使编译器很自然的保护那些不希望被修改的参数,防止无意的代码修改,可以减少bug的出现;二、const的用法常变量: const 类型说明符 变量名常引用:...
2020-02-11 15:12:25
13088
原创 extern “C”的用法和作用
extern “C”的作用详解 extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码,实现C++与C及其它语言的混合编程。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数...
2020-02-09 16:35:42
2268
转载 char* 和 char[]的区别
char* 和 char[]的区别 从一开始写c 程序,我就一直有一个疑惑,当自己动手写的时候这个问题依旧存在,这引起了我的思考,这也许是一个很基础的问题但是确实一个十分重要的问题,不能眼高手低,踏踏实实体会 char *string ="hello" 和 char string[] = "hello";前面改变他的内容是...
2020-02-07 17:50:18
147
原创 不用if等判断语句找出两个数中间较大的那个?
【解决思路】两个数相减,得到其符号,利用其符号可以知道哪个大。但对于两个不同符号的数,相减可能会溢出,所以我们需要判断一下两个数的符号。判断数的符号用到位运算。所以先介绍一下位运算。【位运算】位运算符(左结合律)左移运算符(<<)在右侧插入值为的二进制位。右移运算符(>>)的行为则依赖于其左侧运算对象的类型:如果该运算对象是无符号类型,在左侧插入值为0的二进制位;...
2020-02-05 16:57:58
942
原创 C++中引用和指针
C++中使用指针的优点1.指针能够有效的表示数据结构;2.能动态分配内存,实现内存的自由管理;3.能较方便的使用字符串;4.便捷高效地使用数组;5.指针直接与数据的储存地址有关。比如:值传递不如地址传递高效, 因为值传递先从实参的地址中取出值,再赋值给形参代入函数计算;而指 针则把形参的地址直接指向实参地址,使用时直接取出数据,效率提高,特别在频繁赋值等情况下...
2020-02-04 17:28:00
231
转载 C++ vector 用法介绍
原博客:文章目录1. vector:1.1 vector 说明1.2 vector初始化:1.3 vector对象的常用内置函数使用(举例说明)2. 顺序访问vector的几种方式,举例说明2.1. 对向量a添加元素的几种方式2.2 从向量中读取元素3.几个常用的算法1. vector:1.1 vector 说明vector是向量类型,可以容纳许多类型的数据,因此也被称为容器(可以理解...
2020-02-04 12:13:13
345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人