C/C++
JCjunior
世上只有一种英雄主义...
展开
-
笔记-算法题-字符串
字符串匹配正则表达式原创 2021-11-10 09:07:33 · 108 阅读 · 0 评论 -
C++ 无法读取内存
vs2012调试程序时又遇到一个新问题,“无法读取内存”,找了半天终于找到,哭死:errors:OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp...原创 2019-03-11 14:36:43 · 14280 阅读 · 0 评论 -
0xC00000FD: Stack overflow
vs2012报错:0xC00000FD: Stack overflow (参数: 0x00000001, 0x00AD2FFC)出现栈溢出错误的原因:1.在函数中同时申明了h和H数组,以为区分大小写,实际上是不区分大小写的,导致访问冲突,故去掉一个就可以了。 int h[H_X][H_Y][H_Z]; int H[HM_R][HM_C];2. 其中涉及到申明的局部...原创 2019-03-01 09:53:48 · 8857 阅读 · 0 评论 -
C++ Primer (第5版)-笔记
1. 采用C++11标准2. C++同时支持4种不同的编程风格:C风格、基于对象、面向对象和泛型、“基于组件”的风格(微软的COM)。原创 2020-07-22 11:35:01 · 151 阅读 · 0 评论 -
C++ map, multimap,unordered_map,unordered_multimap,set, multiset,unordered_set,unordered_multiset的区别
转载:https://blog.csdn.net/qq_33726635/article/details/106553317?utm_medium=distribute.pc_relevant_t0.none-task-blog-blogcommendfrommachinelearnpai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-blogcommendfrommachinelearnpai2-1.转载 2020-09-13 19:58:37 · 338 阅读 · 0 评论 -
vector<int> v 与 vector<int> v(n) 的区别
使用vector的注意事项(切记):使用 vector<int> v; 声明一个容器v时,如果没有给他预定存储空间(如:vector<int> v;),则可以直接使用v.insert(x)插入变量x,那么插入的第一个元素可以用v[0]访问到。 使用 vector<int> v(n); 声明一个容器v时,如果给他预定存储空间(如:vector<int> v(n);),则vector<int> v(n); <==等价于==> vect原创 2020-09-06 22:47:12 · 5601 阅读 · 0 评论 -
C++创建二维数组及分配空间
1. array方式(1)使用一维数组访问的元素方式 访问二维数组int rows=2;//rows>0int columns=3;//columns>0int matrix[] = {1,2,3,4,5,6};for(int i=0;i<rows;i++){ for(int j=0;j<columns;j++) { cout<<matrix[i*columns+j]<<" "; //matrix[i*co原创 2020-08-26 10:04:58 · 1193 阅读 · 0 评论 -
C++ 字符串读取及切片
1. cin每次只能读入单个单词,该单词中间不能有空格,遇到空格则停止读取。#include <iostream> using namspace std;cin>>a;//把键盘的数据放到变量a里。cout<<"hello\n";//字符串数据流动到屏幕。2.getline可以读入一条语句,可以包含空格,遇到回车终止。函数调用getline();从标准输入流对象cin(即键盘)连续读取字符(包括空格符),直到遇到换行符为止。 读取的这些字符放入..转载 2020-08-16 22:25:04 · 10673 阅读 · 3 评论 -
C++ list
从1 list1.1 list简介1.2 list基本语法assign(); // 给list赋值 front(); // 返回第一个元素 back(); // 返回最后一个元素 begin(); // 返回指向第一个元素的迭代器 end(); // 返回末尾的迭代器 get_allocator(); // 返回list的配置器 insert(); // 插入一个元素到list中 push_back(); // 在list的末尾添加一个元素 push_front..转载 2020-07-31 14:13:49 · 444 阅读 · 0 评论 -
C++ queue、priority_queue、deque
1.头文件#include <queue>2. queue 队列基本操作top(); //访问队头元素empty(); // 队列是否为空size(); // 返回队列内元素个数push(); // 插入元素到队尾 (并排序)emplace(); // 原地构造一个元素并插入队列pop(); // 弹出队头元素swap(); // 交换内容3.priority_queue 优先级队列(1)priority_queue和queue的不同priority_que..原创 2020-07-29 16:06:41 · 479 阅读 · 2 评论 -
字符串相关算法
1. 子串子串中的字符在原始字符串中一定连续。2. 子序列子序列中的字符在原始字符串中不一定连续。原创 2020-07-23 10:50:46 · 137 阅读 · 0 评论 -
二分查找算法及其扩充
详情连接:https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-xiang-jie-by-labuladong/原创 2020-07-23 10:36:49 · 167 阅读 · 0 评论 -
C++结构体定义及申请空间
1. 单链表结点//Definition for singly-linked list.struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};int main(){ //声明一个单链表结点,并给他分配空间,结点的值val初始化为0,其指向下一个结点的指针为NULL ListNode* node=new ListNode(0); /原创 2020-07-22 21:59:49 · 2354 阅读 · 0 评论 -
C++ map, unordered_map
1. map简介map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,能在处理一对一数据时,在编程上提供快速通道。 map内部数据结构:一个map对应一颗红黑树(一种非严格意义上的平衡二叉树),红黑树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,由小到大排序。 map是一种关联式容器,特点是增加、删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。 通过map的..转载 2020-07-20 21:11:24 · 1018 阅读 · 0 评论 -
C++中, int与char、string与int 的相互转换
1. 使用C语言函数将string转intusing namespace std;string str = "1234";int i = atoi(str.c_str());2. 使用C++语言函数 将string转int (C++11)using namespace std;string str = "1234"; // 不加命名空间要加 std::string str = "1234";int i1 = stoi(str); // string转intlong i2.原创 2020-07-17 14:39:27 · 206 阅读 · 1 评论 -
C++标准库里的max,min,swap等函数
#include <algorithm>int a=2, b=3; int minimum = min(a, b); // =2swap(a, b); //输出:a=3, b=2原创 2020-06-16 01:35:41 · 958 阅读 · 0 评论 -
C++ vector
容器顺序容器:顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。 动态数组:支持对序列中的任意元素进行快速直接访问,可以通过指针访问,在序列末尾可以快速地添加/删除元素。 能够感知内存分配器(Allocator-aware)的容器:容器使用一个内存分配器对象来动态地处理它的存储需求。顺序容器之vectorvector又叫向量,是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以认为ve转载 2020-06-15 11:07:36 · 766 阅读 · 0 评论 -
C++ sort()
C++中sort()函数的特性:标准函数sort() 的头文件:#include<algorithm> std::sort; sort() 默认是按元素从小到大排序; sort() 能用到vector和set中,vector是线性容器,set是关联容器; sort() 可以对静态的数组进行排序; C++中自带sort() 排序方法,需要提供待排序序列的头地址、尾地址、排序方式(降序或升序); sort() 时间复杂度为Nlog2(N); vecto...原创 2020-06-14 09:34:06 · 1736 阅读 · 0 评论 -
C++ set 、unordered_set
C++中set的特性:set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值; set的所有元素都会根据元素的键值(值)自动排序; set不允许两个元素有相同的键值,在set中每个元素的值都唯一。 set中数元素的值不能直接被改变。 C++ STL中标准关联容器set,multiset,map,multimap采用平衡检索二叉树(红黑树)实现。 红黑树又叫RB树(Red-Black Tree),RB树的统计性能要好于一般平衡二叉树,所以原创 2020-06-14 08:11:32 · 2892 阅读 · 0 评论 -
C++ 字符串操作
引言字符串类型:C语言的char型字符串 C++语言的string类型字符串二者区别:string类型更节省空间,用多少申请多少,而char类型的数组必须申请最大值。 C++中的map容器等不支持char型数组,但支持map<string,int> mp1. C++标准程序库中的string类#include<string>2. 定义和初始化string s; //生成一个空字符串sstring s(str); //生成str的复制品stri转载 2020-06-02 15:53:12 · 554 阅读 · 0 评论 -
C++之short, int, long, long long, double等范围
1byte = 8bitshort-----------------------[-2^15, 2^15-1]-------------------------------------------2 byte int--------------------------[2^31, 2^31-1]--------------------------------------------4 byte long------------------------[-2^31, 2^31-1...原创 2020-06-01 21:04:09 · 795 阅读 · 0 评论 -
一维数组名称、下标、长度、指针定义
1. 一维数组名称 不是指针2. 除下面两种情况外,一维数组名称都是指向数组中首元素的地址1)对数组名进行sizeof运算,如sizeof(arr)取整个数组的长度202)对数组名取地址,是指向整个数组的指针,如int *p = &arr;3. 数组名 相当于是指针常量,具有如下性质:int * const aarr = NULL; //(×)指针的指向不...原创 2020-04-20 22:49:30 · 1083 阅读 · 0 评论 -
静态链表和动态链表
1. 静态链表和动态链表的区别:(1)静态链表放在栈区(2)动态链表放在堆区,堆区数据必须要手工开辟,手工释放2. 单链表定义#include<stdio.h>#include<string.h>#include<stdlib.h>struct LinkNode{ int num; //数据域 struct LinkNode *...原创 2020-04-20 22:26:45 · 2213 阅读 · 1 评论 -
结合回调函数对任意类型数组排序
1. 结合回调函数和选择排序算法思想对任意类型数组排序//参数1:数组首地址//参数2:每个元素的长度(即每个元素所占空间大小)//参数3:数组的元素个数void selectSort(void *pAddr, int eleSize, int len, int(*myCompare)(void*, void*)){ char * temp = malloc(eleSize); /...原创 2020-04-20 22:13:58 · 389 阅读 · 0 评论 -
函数指针
1. 对函数而言,函数名就是一个指针void func(int a, char b){ printf("函数指针\n");}2. 可通过下面三种方式定义一个函数指针(1)先定义出函数的类型,再定义出函数类型的指针(函数指针)typedef void(FUNC_TYPE)(int, char);FUNC_TYPE *pFunc = func;(2)直接定义出函数指针的...原创 2020-04-20 22:04:09 · 226 阅读 · 0 评论 -
C/C++之二维数组名称含义
C/C++中二维数组名称含义1. 下面的定义方式 可读性高int array[3][3] ={ {1,2,3}, {4,5,6}, {7,8,9}};2. 二维数组名称 不是指针,是指向第一个一维数组的指针int (*p)[3] = arr;通过p访问数组中第5个元素5,i=1,j=1printf("%d\n",p[i][j] ); //给人看的print...原创 2020-04-20 21:55:02 · 506 阅读 · 0 评论