
C++
EncodedStar
爱分享,爱学习,爱助人为乐
点个关注再走吧,感谢!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分查找 binary_search() 应用解析(详细)
binary_search() 判断target是否存在binary_search() 在排序(正序)中,返回是否找到目标值(true or false)定义和实现template <class ForwardIterator, class T>bool binary_search (ForwardIterator first, ForwardIterator last, const T& val);template <class ForwardIterator, c原创 2020-09-22 13:44:04 · 1031 阅读 · 0 评论 -
教你花式实现循环代码的优化方法代替传统for循环
1、auto代替传统for循环新定义的for循环vector<int> v = {1,3,1,7,5}; // vector容器int num = 0;for(auto x : v) { // 手写for循环 if (x == 1) num++; // 判断条件,然后统计} 2、函数代替传统for循环count()函数vector<int> v = {1,3,1,7,5}; // vector原创 2020-09-03 10:37:28 · 1457 阅读 · 0 评论 -
你还在用push、insert插入函数吗?效率太低了,大神都偷偷用emplace函数了
顺序容器顺序容器(如vector、deque、list),新标准引入了三个新成员,emplace_front、emplace 和 emplace_back,操作分别对应 push_front、insert 和 push_back,允许我们将元素放置在容器头部、一个指定位置之前或容器尾部插入容器头部插入指定位置插入容器尾部emplace_frontemplaceemplace_backpush_frontinsertpush_back调用 push (push_原创 2020-09-02 21:45:35 · 545 阅读 · 0 评论 -
c++ 如何遍历队列Queue
C++ STL Queue队列本身提供遍历的方法#include<iostream>#include<queue>using namespace std;int main(int argc, char* argv[]) { queue<int> myqueue; myqueue.push(1); myqueue.push(2); ...原创 2020-03-06 17:00:57 · 32177 阅读 · 6 评论 -
stringstream 的.str()正确用法和清空操作
stringstream 的.str()正确用法和清空操作1、stringstream 的.str()正确用法streamstring在调用str()时,会返回临时的string对象。而因为是临时的对象,所以它在整个表达式结束后将会被析构。如果需要进一步操作string对象,先把其值赋给一个string变量后再操作。stringstream ss("01234567890123456789...原创 2020-03-06 10:06:58 · 1678 阅读 · 0 评论 -
c++ std中set与unordered_set区别
c++ std中set与unordered_set区别和map与unordered_map区别:set 基于红黑树实现,红黑树具有自动排序的功能,因此 map 内部所有的数据,在任何时候,都是有序的。unordered_set 基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,...原创 2020-03-06 10:04:24 · 1571 阅读 · 0 评论 -
号码分身(解码新思路)
题目描述 继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 (”ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。 输入描述: 第...原创 2018-03-30 07:15:06 · 593 阅读 · 0 评论 -
动态规划为什么就是经典?
五大常用算法:动态规划算法原创 2017-04-24 16:52:06 · 690 阅读 · 0 评论 -
分支限界法为什么经典?
五大常用算法:分支限界法原创 2017-04-27 20:42:19 · 724 阅读 · 0 评论 -
一篇文章轻松实现RSA加密解密(C++版)
RSA算法的描述原创 2017-06-18 11:45:30 · 31056 阅读 · 19 评论 -
一篇文章了解分治算法
一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础, 如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模原创 2017-05-25 13:25:31 · 1968 阅读 · 0 评论 -
linux常用头文件详解
unix/linux环境高级编程 首先说明几点:1 Linux内核所在目录为/usr/src/kernels/...2 Linux头文件所在目录为/usr/include/...3 找不见头文件可以用find命令查找 find / -name *.hlinux常用头文件如下:POSIX标准定义的头文件<dirent.h> 目录项<fcntl.h> 文件控制read,w原创 2017-07-12 14:27:46 · 1222 阅读 · 0 评论 -
一篇文章了解回溯法
五大常用算法:回溯法原创 2017-04-23 10:48:39 · 683 阅读 · 0 评论 -
有向图-邻接表
有向图邻接表,自我感觉比邻接矩阵要理解复杂一点,但是节省的空间不是小数目,所以虽然复杂,但是我们还是要优先考虑邻接表吧。 下面代码简单的写了邻接表,但是基本核心的代码全部包括了,之后图中加权的我也在代码中有所涉及,我们只要更一些参数就可以。基本符合所有要求了吧。输入: 4 5 a b c d 0 3 1 0 1 2 2 0 2 1原创 2017-04-27 20:27:13 · 8121 阅读 · 2 评论 -
图的遍历--邻接矩阵
图的遍历–广度优先遍历和深度优先遍历是遍历中最经典的算法,下面代码是图的邻接矩阵,学会了这种方法,我们做迷宫的题就不是问题了。 图的第一步才刚刚开始,还有邻接表,稍后也会研究。#include <iostream>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status; /* Status是函数的类原创 2017-04-26 19:11:27 · 1256 阅读 · 0 评论 -
一篇文章了解,邻接矩阵--有向图
有了无向图邻接矩阵,有向图就比较容易些了原创 2017-04-25 16:57:02 · 3280 阅读 · 0 评论 -
邻接矩阵--无向图
图的邻接矩阵存储方式是用俩个数组来表示的图。一个一维数组储存图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边和弧的信息。 有了矩阵的好处: 1、我们要判定任意二个顶点是否有边就容易了; 2、我们知道某个顶点的度,其实就是知道顶点vi在邻接矩阵中第i行(i列)的元素之和。 3.求顶点vi的所有邻接点就是将矩阵中第i行元素扫描一遍,为1就是邻接点。原创 2017-04-24 18:05:54 · 2765 阅读 · 1 评论 -
堆排序是一种怎么样的体验
时间复杂度:O(n*logn) 特别适用于数据量很大的场合(百万级数据)。因为快排和归并排序都是基于递归的,数据量很大的 情况下容易发生堆栈溢出。 排序速度略低于快排。 也是一种不稳定的排序算法。比如 3 27 27 36,如果堆顶3先输出,则第三层(最后一个27)跑到堆顶, 然后堆稳定,继续输出堆顶,是刚才那个27, 这样说明后面的27先于第二个位置的27输出,不稳定。原创 2017-04-22 08:30:37 · 457 阅读 · 0 评论 -
最长公共子序列
算法思路:将俩个字符串放在数组中比较,一个一个字符比较,只看他前面的数以最大的为主,来判断哪个方向的子序列长。二维数组用的很巧妙。本题主要思想就是动态规划。原创 2017-04-22 14:58:28 · 418 阅读 · 0 评论 -
插入排序是一种怎么样的体验
在得到要排序的数组以后,讲数组分为两个部分,数组的第一个元素为一个部分,剩下的元素为一部分,然后从数组的第二个元素开始,和该元素以前的所有元素比较,如果之前的元素没有比该元素大的,那么该元素的位置不变,如果有元素的值比该元素大,那么记录相爱他所在的位置;例如,该元素的位置为 k,则将从 i 到 k 位置上的所有元素往后移动一位,然后将 k 位置上的值移动到 i 位置上。这样就找到了 K 所在的位置。每一个元素都这样原创 2017-04-22 08:37:28 · 418 阅读 · 0 评论 -
快速排序是一种什么样的体验
最常用的排序算法,速度通常也是最快的。时间复杂度:O(n*logn)最坏:O(n^2)空间复杂度:O(n*lgn)不稳定(比如 5 3 3 4 3 8 9 10 11 这个序列,在中枢元素5和3交换就会把元素3的稳定性打乱)原创 2017-04-19 15:15:27 · 1048 阅读 · 1 评论 -
#pragma once与#ifndef两种防止头文件二次编译的区别
在最开始接触到C语言的时候,看到很多大牛们写的代码里面就有#ifndef #define #endif 这三条语句,当时不明白什么意思,慢慢的后来自己也开始用了,也知道了他们合起来使用时为了防止头文件被二次编译,因为我们曾经写代码的过程中一定遇到过等类似的错误吧。到了学习C++的时候,我们老师给我们看他的代码的时候发现他的头文件里用的是#pragma once,就奇怪这是什么呢?然后私下百度转载 2017-07-18 09:40:26 · 385 阅读 · 0 评论 -
ubuntu c++ 连接mysql
连接数据库后的增删改查操作原创 2017-08-01 13:55:25 · 1959 阅读 · 0 评论 -
C++快速排序的最简单实现,没有之一。
快排的最简单实现void Qsort(int arr[], int low, int high){ if (high <= low) return; int i = low; int j = high+1; int key = arr[low]; while(true) { while(arr[++i] < key) ...原创 2019-10-08 11:00:25 · 685 阅读 · 3 评论 -
有效的完全平方数
经过(xi, f(xi))这个点的切线方程为f(x) = f(xi) + f’(xi)(x - xi),其中f’(x)为f(x)的导数,本题中为2x。令切线方程等于0,即可求出xi+1=xi - f(xi) / f’(xi)。继续化简:xi+1=xi - (xi2 - n) / (2xi)= xi - xi / 2 + n / (2xi= xi / 2 + n / 2xi= (xi...原创 2019-07-01 11:53:00 · 218 阅读 · 0 评论 -
for(auto &i:s)和for(auto i:s)区别
** 一、for(auto &i:s)和for(auto i:s)区别:**代码1:#include<iostream>#include<string>using namespace std;string s = "hello";for (auto &i : s ) //i是个引用 i到底引用的是什么? i = toupper(i); //改变...原创 2019-06-27 10:58:48 · 4633 阅读 · 0 评论 -
判断一个整数是否是2的N次方
if (num & (num-1)) return false; else return true;原创 2019-06-26 15:52:42 · 561 阅读 · 0 评论 -
map的value默认值,如何map的value自定义
1.map的value默认值在使用map的[]操作符对其进行访问时,如果map中尚没有查询的key值,则将创建一个新的键值对。其key值为查询的值,value值分为以下两种情况:value为内置类型时,其值将被初始化为0value为自定义数据结构时,如果定义了默认值则初始化为默认值,否则初始化为02.自定义map的value默认值例如:map的value为int类型,key值也为val...原创 2019-07-01 15:42:50 · 3998 阅读 · 0 评论 -
最小栈(运用STL的min_element()与max_element()(取容器中的最大最小值))
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。getMax() – 检索栈中的最大元素。示例:MinStack minStack = new MinStack();minStack.push(-2);...原创 2019-06-11 10:13:50 · 319 阅读 · 0 评论 -
对称二叉树
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3这里用迭代真的太酷了class Solution {public: bool isSymm...原创 2019-06-04 10:51:02 · 165 阅读 · 0 评论 -
比例筛选
在场景种是否有遇到过概率比来的到值呢这里提供一个Lua的代码做思路。function SpecifyProbability(RandomTable, ProbabilityTable)if RandomTable == nil or ProbabilityTable == nil thenreturnendlocal price = 0local pricetable ={}for...原创 2019-06-04 10:44:32 · 280 阅读 · 0 评论 -
c++ 链表翻转
快指针和慢指针ListNode *slow=head;ListNode *fast=head;while(fast){ slow=slow->next; fast = fast->next ? fast->next->next: fast->next;}快指针指向末尾,退出循环链表翻转(递归)ListNode* rev(ListNode* h)...原创 2019-06-19 19:42:19 · 288 阅读 · 0 评论 -
数串: 对字符串排序(C++11标准)
题目描述 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343,连成的最大整数为34331213。 如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入描述: 有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。 输出描述: ...原创 2018-03-27 23:37:42 · 1526 阅读 · 0 评论 -
求数列和
题目描述 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 输入描述: 输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。 输出描述: 对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。 示例1 输入81 4 2 2 输出94.73 3.41#inc...原创 2018-04-02 20:37:31 · 323 阅读 · 0 评论 -
将数字转大写打印出来(C++)
#include <bits/stdc++.h>using namespace std;void g_print(int number){ switch(number) { case 1: cout << "一"; break; case 2: cout << "二"; ...原创 2018-04-01 09:07:04 · 1463 阅读 · 0 评论 -
句子反转(“hello xiao mi”-> “mi xiao hello”)
题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符) 输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子 示例1 输入he...原创 2018-03-30 06:27:17 · 1033 阅读 · 0 评论 -
网络编程
网络编程1. TCP与UDP的比较TCP是面向连接的,交互双方的进程各自建立一个流式套接字,服务器需要等待客户端向其提出连接申请。一旦接受客户端申请就立刻返回一个新的套接字描述符。通过该描述符调用数据传输函数与客户端进行数据的收发。UDP是面向无连接的,双方建立的是数据报套接字,服务器和客户端在进行传描数据之前不需要进行连接的申请和建立,可以随时向对方发消息。 TCP转载 2017-11-14 12:36:54 · 344 阅读 · 0 评论 -
归并排序是一种怎么样的体验
归排和快排的区别是什么,首先他们都用的分治的思想,把序列逐步分开然后拍序合并,用递归实现每一步的操作,速度极快,他们的出现让O(n^2)复杂的的极限被打破。值得注意的是,它是一种稳定的排序算法。时间复杂度:O(n*logn)与前快速排序算法不同的是,归并排序需要额外的数组开销。注:所谓排序的稳定性,是指在排序过程中,在对a关键字排序后会不会改变其他关键字的顺序。在比较有相同关键字序列的情况下,稳定的排序会将原创 2017-04-22 08:26:55 · 421 阅读 · 0 评论 -
素数距离问题
算法思路:将输入的数字先找前面第 i 位,在对应找后面第 i 位,如果找到前面的返回,如果找到后面的返回。这样大大缩小了查找素数的个数引起的不必要循环。原创 2017-04-04 22:22:59 · 456 阅读 · 1 评论 -
6174问题
算法思路:由于我们只做过数组的排序没有做过位数的排序,所以我们只能讲4位数各个数位放到一个数组里然后进行排序。原创 2017-04-09 15:04:48 · 356 阅读 · 0 评论