
c++
文章平均质量分 69
unspoken0714
这个作者很懒,什么都没留下…
展开
-
Json文件解析
Json文件参考blog:json文件格式详解JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。示例:{ "topics": [ { "topic": "/RFC01", "type": "ld_image" }, { "topic": "/hesai_2", "type":原创 2021-06-06 02:27:11 · 1312 阅读 · 0 评论 -
Leetcode升级之路(数据结构更新完毕)增加C++版本ing
时间复杂度常见的时间复杂度O(1):执行常数次,和输入无关def O1(num): i = num j = num*2 return i+jO(N):def ON(num): total = 0 for i in range(num): total+=i return totalO(logN):def OlogN(num); i = 1 while(i < num): i = i*2 return iO(M+N)def OMN(原创 2020-11-28 18:03:45 · 3658 阅读 · 3 评论 -
c++prime chapter2.变量和基本类型
基本类型注意事项当明知道数值不可能为负时,选用无符号类型在算数表达式中尽量不要使用char因为char在有的机器上是有符号的, 但有的机器上是无符号的如果要使用,必须明确指定signed char还是unsigned char切勿混用带符号类型和无符号类型当带符号类型取值变为负数时,会出现异常结果 这是因为带符号数会自动转换成为无符号数#include <iostream>int main(){ // 切勿混用带符号类型和无符号类型. // 当原创 2021-03-14 08:10:44 · 301 阅读 · 0 评论 -
c++读取数量不定的输入数据
不知道用户输入的个数,需要不断读取数据直至用户停止输出为止.程序实现 int value; int sum = 0; while(std::cin >> value){ sum+=value; } std::cout<<sum<<std::endl; return 1;这里std::cin >> value运算返回的是std::cin对象,该对象在作为条件时,能检测流的状态.如果检测成功,原创 2021-03-13 06:23:26 · 605 阅读 · 0 评论 -
单调栈详解
使用背景通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。单调栈的本质是空间换时间,用一个栈来记录右边第一个比当前元素的元素,优点是只需要遍历一次。单调栈的时候首先要明确如下几点:单调栈里存放的元素是什么?单调栈里只需要存放元素的下标i就可以了,如果需要使用对应的元素,直接T[i]就可以获取单调栈里元素是递增呢? 还是递减呢?使用单调栈主要又三个判断条件。当前遍历的元素T[i]小于栈顶元素T[st.top()]的原创 2021-03-06 07:50:14 · 275 阅读 · 0 评论 -
c++面试知识点
编译过程编译过程分为四个过程:编译(编译预处理、编译、优化),汇编,链接。编译预处理:处理以 # 开头的指令;编译、优化:将源码 .cpp 文件翻译成 .s 汇编代码;汇编:将汇编代码 .s 翻译成机器指令 .o 文件;链接:汇编程序生成的目标文件,即 .o 文件,并不会立即执行,因为可能会出现:.cpp 文件中的函数引用了另一个 .cpp 文件中定义的符号或者调用了某个库文件中的函数。那链接的目的就是将这些文件对应的目标文件连接成一个整体,从而生成可执行的程序 .exe 文件链接分为两种:原创 2021-03-02 07:42:48 · 108 阅读 · 0 评论 -
双指针 + 滑动窗口
双指针法双指针法可以看成是虫在蠕动,先右指针移动,然后左指针在根据判定条件,不断移动,直至满足判定条件。接着右指针再次移动,如此循环用代码模板可以看成int left = 0;int right = 0;int res = 0;while(right < nums.size()){ sum+=nums[right]; while(不满足条件时){ sum-=nums[left]; left--; } res = max(res, right - left + 1); ri原创 2021-02-05 06:35:31 · 186 阅读 · 0 评论 -
二分法
适用场景一般适用场景是有序数组中查找指定元素。模板大佬的模板目标值包含在我们设置的范围中(通过mid来判定)、# Input: vector<int> nums, targerint left = 0;int right = nums.size()-1;while(left <=right){ # 为了防止溢出 int mid = left + (right - left) /2; if(nums[mid] == target){ return mid; }原创 2021-02-01 07:02:35 · 106 阅读 · 0 评论 -
c++外输入参数设置(yaml + argv)
动机:原创 2021-01-14 00:46:02 · 479 阅读 · 0 评论 -
动态规划(0-1背包)
动态规划通常可以拆解为五步,确定dp数组下标的含义确定状态转换方程dp数组如何初始化确定遍历顺序举例推到dp数组原创 2021-01-13 07:44:14 · 122 阅读 · 0 评论 -
优先队列 C++
复杂度:插入push: O(N)弹出堆顶元素: O(logN)特点优先队列具有队列的所有特性,包括基本操作添加了内部的一个排序(堆)如果将pair类型存入堆,则先比较第一个元素,第一个元素相等时,在比较第二个元素常用操作创建优先队列priority_queue<Type, Container, Functional>//升序队列(小顶堆)priority_queue <int,vector<int>,greater<int> >原创 2020-12-27 07:41:17 · 260 阅读 · 0 评论 -
c++一些常见的内置函数(字符串)
字符串与数字之间互换将数字类型数据结构转换成字符串int a = 1;double b = 0.0;string digit1 = to_string(a);string digit2 = to_string(b);cout << digit1 << endl; #1cout << digit2 << endl; #0.000000将字符串转换成整形数据如果字符串含有小数位,则直接省略掉小数位int a = 1;str原创 2020-12-17 07:01:42 · 536 阅读 · 0 评论 -
有关字符串元素统计类型题目的一点感想
在刷leetcode时,常常会发现需要将字符串中的char统计出现的频率。其实这时我们可以构建一个数组储存字符出现的频率。string s;vector<int> con(26,0);for(char e:s){ con[e-'a']++;}例子621. 任务调度器给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任原创 2020-12-05 06:09:46 · 292 阅读 · 0 评论 -
贪心算法LEETCODE集锦(包含区间问题)
455.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子原创 2020-11-25 18:37:00 · 455 阅读 · 0 评论 -
常见的三种哈希结构
查询一个元素是否出现在集合中的快速方法,哈希表一般会使用如下三种数据结构数组setmapsetc++中对于set提供了三种数据结构集合底层实现是否有序数值是否可以重复是否能更改数值查询效率增删效率std::set红黑树有序否否O(logn)O(logn)std::multiset红黑树有序是否O(logn)O(logn)std::unordered_set哈希表无序否否O(1)O(1)map集合原创 2020-11-07 22:02:29 · 664 阅读 · 0 评论 -
Eigen库的安装及常见操作
Eigen库的安装sudo apt-get install libeigen3-devsudo cp -r /usr/include/eigen3/Eigen /usr/includeEigen库的常见操作#include <iostream>#include <eigen3/Eigen/Dense>using namespace std;using namespace Eigen;// 常用template <typename T>using M原创 2020-10-31 07:52:39 · 507 阅读 · 0 评论 -
VSCode在linux下的实战
源文件Gun.h#pragma once#include <string>class Gun{private: /* data */ int bullet_count; std::string type;public: Gun(std::string type){ this->bullet_count = 0; this->type = type; } void addBullet(in原创 2020-10-30 22:22:06 · 182 阅读 · 0 评论 -
c++中strtok函数
strtok函数可以将字符串进行分割char * strtok ( char * str, const char * delimiters );int main (){ char str[] ="- This, a sample string."; char * pch; printf ("Splitting string \"%s\" into tokens:\n",str); pch = strtok (str," "); while (pch != NULL) {原创 2020-10-28 18:27:31 · 410 阅读 · 0 评论 -
c++如何跳出多重循环
c++中,break只能跳出单层循环。跳出多重循环方法:使用return, 跳出整段子程序使用goto,跳出所有循环,到指定地方class Solution {public: string longestCommonPrefix(vector<string>& strs) { string res; if(strs.empty()){ return res; } for(int原创 2020-10-17 05:32:06 · 8752 阅读 · 0 评论 -
bfs模板
广度优先搜索的模板利用一个队列记录每层的元素将每元素连接的下层元素压入队列将队列头元素离开队列直到队列为空,停止搜索class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> que; if (root != NULL) que.push(root); vector<vecto原创 2020-09-29 06:37:19 · 125 阅读 · 0 评论 -
Linux下Visual code使用
创建工作空间mkdir projectscd projectsmkdir helloworldcd helloworldcode ..cd 是启动visual code创建文件创建helloworld.cpp文件#include <iostream>#include <vector>#include <string>using namespace std;int main(){ vector<string> msg原创 2020-09-27 08:44:47 · 262 阅读 · 0 评论 -
c++中stl中的stack和queue
栈和队列是STL中两个数据结构。三个C++版本的STL:HP STLPJ PlaugerSGI STL常用的是SGI的STL里的数据结构。栈和队列是不提供随机访问功能的,所有的元素必须符合LIFO or FIFIO. 也不提供迭代器Iterator来遍历元素STL中栈的实现。对外提供pop,push,top三个接口底层以vector or deque or list实现默认为deque实现也可选择另外两个数据结构实现std::stack<int, std::vector&原创 2020-09-11 21:39:15 · 151 阅读 · 0 评论 -
快速排序
Leetcode 912 数组排序给你一个整数数组 nums,请你将该数组升序排列。方法一: 快速排序参考: https://blog.youkuaiyun.com/wthfeng/article/details/78037228基本思想:将基点放入他正确的位置,将数组划分为两份: 大于基点的,小于基点的。然后对两份分别进行递归,直至所有的点都位于合适的位置。确定出归条件,当区间只含有一个元素时,即:不用继续排序了。 所以出归条件为: low >= high.先将右边界向左扫描,遇到小于基点的元素原创 2020-09-09 03:11:29 · 175 阅读 · 0 评论 -
回溯(n皇后问题+组合总和 I+II+III)
问题描述: 任意两个皇后都不能处于同一行,同一列或者同一斜线上,请问有多少种排列方法public class MyEightQueen { /** * @ param max: 皇后的数量 * @ param array[]: 储存皇后的摆放方式; * @ param count: 总的摆放数量; */ public int max; public int[]array; public int count; /**原创 2020-07-28 00:02:55 · 273 阅读 · 0 评论 -
稀疏数组+动态内存分配生成二维数组
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>using namespace std;int main(){ //int chess[2][2] = {0}; //chess[1][2] = 1; //chess[1][2] = 2; //cout << "原始棋盘" << endl; int a[10][10] = { 0 }; a原创 2020-07-27 11:42:41 · 169 阅读 · 0 评论 -
c++实现链表及栈
使用结构体实现的代码:实现栈#include "pch.h"#include <iostream>using namespace std;typedef struct node { int value; struct node* next = 0; // 构造}node; node* creator() { node* head = new node; return head;} void push(node* head, node* newNode) {原创 2020-07-27 10:48:09 · 327 阅读 · 0 评论 -
递归-迷宫问题(java+c++)
public class migong { int[][] map; /** * * @param row: 迷宫的行 * @param col: 迷宫的列 * 迷宫初始化: 0:表示未走过; 1:表示墙; 2: 走过; 3: 不可行 ; 4: 终点 */ public migong(int row, int col){ map = new int[row][col]; for (int i = 0;原创 2020-07-27 10:11:26 · 136 阅读 · 0 评论 -
使用struct构建链表来模拟Stack
思路:1.使用链表的头插法Push: newNode.next = head.next; head.next = newNode;2.Pop: head.next = head.next.next;#include "pch.h"#include <iostream>using namespace std;typedef struct node { int value; struct node* next = 0; // 构造}node; node* creator原创 2020-07-23 09:18:38 · 151 阅读 · 0 评论 -
C++报错合集
C++ static变量出现 无法解析的外部符号:public: static 的问题在h文件中声明了static int, 但未在cpp中进行初始化解决方法:在cpp中进行初始化。// .hstatic int icount;// .cpp中进行初始化int Person::icount = 0;HEAP[xxx.exe]:Invalid Address specified to RtlValidateHeap错误地释放堆内存解决办法:查看开辟内存的方式, 相应的检查释放方式是否正确原创 2020-05-31 08:31:33 · 348 阅读 · 0 评论 -
C++基础知识(数据类型+逻辑判断+数组+指针+继承)
Basic Knowledgecpp, h头文件 h, 类,数据声明;cpp,运行文件Debug vs ReleaseRelease: 发布版本Debug: 调试版本。 占用内存大,报错信息丰富。step over:直接执行完函数step into: 走进函数step out: 跳出函数,直接执行完。数据printf printf("mary have %d lambs, price is %.2f",3,55.4); //占位符 printf("\nmary have %d l原创 2020-05-25 08:44:16 · 1198 阅读 · 0 评论