C++例子
青阳不会被占用
stay hungry,stay foolish
展开
-
C++ map和multimap的键查找和值查找以及删除操作
C++的map和multimap本质都是排序的平衡二叉树。其中不同的点在于map——key是唯一的。multimap——key是不唯一的。另外需要提及的一点是它们的删除操作,在删除某个迭代器的时候会导致迭代器失效。下面的代码主要介绍几个特殊的查找函数:find——已知key查找map或者multimap中的第一个满足条件的值。find_if——已知起始迭代器,终止迭代器,bool表达式的第一个满足表达式的值。(该函数来自algorithm包)lower_bound——已知key,查找>原创 2021-02-04 11:07:51 · 2089 阅读 · 0 评论 -
linux下用gdb调试查看core文件内容
参考帖子:https://www.cnblogs.com/bodhitree/p/5850212.html原创 2021-02-03 15:22:35 · 849 阅读 · 0 评论 -
mysql源代码解析经典类——Field类
Field类用于描述表中的列或属性。Field是对列数据类型以及属性的定义。Field类是一个抽象类。Field类有许多的具体子类。几乎每种类型的列都有相对应的Field子类。sql下的Field.h文件 ,其继承派生关系如下Field基类->Field_Num类->Field_real类->Field_decimal类 ->Field_float ->Field_double ->原创 2020-12-21 20:40:50 · 1286 阅读 · 0 评论 -
mysql内核开发最好的参考资料
mysql官方源代码说明手册https://dev.mysql.com/doc/dev/mysql-server/latest/mysql源代码(下载源代码编译)书籍:mysql核心内幕(对应的英文书籍:Understanding mysql internals)<要书籍的可以加我qq:1670171244>...原创 2020-12-17 20:20:23 · 329 阅读 · 0 评论 -
分子动力学模拟中时空性质均方位移函数MSD代码
具体细节可参考原文的支持信息:http://www.whxb.pku.edu.cn/CN/10.3866/PKU.WHXB202003037原创 2020-10-17 23:29:43 · 1324 阅读 · 0 评论 -
leetcode77组合问题
问题描述给定两个整数n和k,返回1,2,3…n的所有可能的k个整数的组合。输入输出输入:n=4,k=2;输出:[[1,2],[1,3],[1,4],[2,3],[2,4],[3,4],]C++实现#include<iostream>#include<vector>#include<algorithm>using namespa...原创 2019-08-15 15:10:21 · 111 阅读 · 0 评论 -
使用递归函数生成排列
C++实现template<class T>void permutations(T list[],int k,int m){//生成list[k,m]的所有排列 if(k==m)//仅有一个排列 { copy(list,list+m+1,ostream_iterator<T>(cout,"")); cout<<...原创 2019-08-11 21:55:18 · 704 阅读 · 0 评论 -
使用stl算法next_permutation求排列
C++实现template <class T>void permutation(T list[],int k,int m){//生成list[k:m]的所有排列 do { copy(list,list+m+1,ostream_iterator<T>(cout,"")); cout<<endl; } ...原创 2019-08-11 22:02:51 · 101 阅读 · 0 评论 -
C++实现矩阵转置
1.转置原理矩阵转置:即在i行j列的元素与j行i列的元素互换2.C++实现template<typename T>void transpose(T **a,int rows){//原地完成矩阵a[0:rows-1][0:rows-1]的转置 for(int i=0;i<rows;i++) { for(int j=i+1;j<rows...原创 2019-08-11 22:19:13 · 4941 阅读 · 0 评论 -
C++实现括号匹配
1.问题描述对一个字符串的左右括号进行匹配,字符串(a*(b+c)+d)在位置0和3有左括号,在位置7和10有右括号。位置0和位置10的右括号匹配,位置3的左括号和位置7的有括号匹配。2.求解策略如果从左至右地扫描一个字符串,那么每一个右括号都与最近扫描的那个未匹配的左括号相匹配。从左到右地扫描过程中,将扫描到的左括号保存到栈中,每当扫描到一个右括号,就将它和栈顶的左括号相匹配,并将匹配的左...原创 2019-08-12 10:04:59 · 6967 阅读 · 0 评论 -
const指针问题
遇到const修饰的时候,从右向左读,最容易区分例1:const int *p1;//则const修饰的是int *p1说明这个变量是不变的,就是p1所指向的变量是常量变量。例2:int const p2=&i;//const修饰的是p2(表示所指向的变量),说明p2所指的变量不能改变,也就是指向常量变量。例3:int *const p3=&i;//const修饰的是p...原创 2019-08-25 09:56:29 · 481 阅读 · 0 评论 -
leetcode1两数之和
描述:给定一个整数数组和一个值target,求两个下标i、j,使得a[i] + a[j] = target,返回下标。解法一:哈希表可以用哈希表unordered_map不断记录每个元素对应的下标,然后查找target - a[i]就行了,查到了就有,查不到就没有。时间空间复杂度都是O(N)。#include <unordered_map>using std::unordere...原创 2019-08-13 10:59:34 · 151 阅读 · 0 评论 -
leetcode2两数相加
题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2019-08-13 11:19:16 · 126 阅读 · 0 评论 -
牛客网编程答题测试技巧
输入1.预先不知到数据的组数用while#include <iostream>using namespace std;int main(){ int a,b; while(cin>>a>>b) { cout<<a+b<<endl; } return 0;}2.预先...原创 2019-08-18 10:27:15 · 3121 阅读 · 0 评论 -
C++实现排列组合问题
排列组合问题是高中数学知识,但是在现实中非常需要;对于计算机编程领域来说更是数不胜数。一、排列问题排列(英语:Permutation)是将相异对象或符号根据确定的顺序重排,每个顺序都称作一个排列。1.1排列数的计数此节使用排列的传统定义。从 n个相异元素中取出 {\displaystyle k} k个元素, k个元素的排列数量为:1.2重复排列问题从n个元素中取出k个元素,k个元素可...原创 2019-08-11 17:42:34 · 12702 阅读 · 1 评论 -
C++实现常用查找算法
在日常编程和面试中,查找算法和排序算法需要非常熟练。本文用C++语言的语法来写常用的查找算法:顺序查找,二分查找,一、顺序查找1.1基本思想(有序无序皆可以)1 从表中的第一个元素开始,依次与关键字比较。2 若某个元素匹配关键字,则查找成功。3 若查找到最后一个元素还未匹配关键字,则查找失败。1.2 时空复杂度1.查找成功时的平均查找长度为:(假设每个数据元素的概率相等)ASL =...原创 2019-08-11 13:20:53 · 5640 阅读 · 0 评论 -
判断是否是幸运数
1.幸运数的定义:十进制的数字的各个位加和与二进制的数字各个位上的加和相等则为二进制数,否则不是二进制数,输出0-n的幸运数的个数。2.C++实现:#include <iostream>using namespace std;int tenSummary(int x){ int sum=0; while (x>=1) { int...原创 2019-08-23 20:46:23 · 1630 阅读 · 1 评论 -
python numpy学习查找最近值
找出数组中与给定值最接近的数(通用方法)。(例:任一数组Z=array([[0,1,2,3],[4,5,6,7]]),给任一定值z=5.1)import numpy as npZ=np.array([[0,1,2,3],[4,5,6,7]])print(Z)x=5.1a=abs(Z-x)print(a)b=a.min()c=abs(x-b)print(c)输出结果:[[01 2 3] [4 5...原创 2018-06-08 11:18:42 · 8421 阅读 · 2 评论 -
径向分布函数
径向分布函数RDF实现算法RDF实现算法RDF是径向分布函数的Radical distribution function的缩写,指的是给定一个空间,在此空间以一个对象为中心,去寻找周围对象的的概率。对于分子模拟的径向分布函数实则也是求解粒子在周期性边界盒子的区域密度和全局密度的比值。区域密度实则就是每一个球壳的数密度/球壳体积全局密度实则就是盒子里面的粒子总数/盒子的体积首先我们需要知道...原创 2018-10-14 17:22:15 · 21791 阅读 · 17 评论 -
快速排序方法分而治之实现
快速排序方法分而治之实现排序方法用分而治之方法可以实现快速排序。假设一个数组Data[n],把这n个元素分成3段:left,middle,right段。middle段仅有一个元素,left段的元素都不大于中间段的元素,right段的元素都不小于middle段的元素。因此可以对left段和right段独立排序,并且排序后不用归并。middle段的元素称为划分元素。伪代码//对a[0:n-1]...原创 2019-04-13 19:13:34 · 345 阅读 · 0 评论 -
LRU缓存算法C++实现
原创 2019-04-25 21:18:09 · 331 阅读 · 0 评论 -
python实现面向对象类的封装VS C++
Python实现类和C++实现类相同点:1.都用关键字class来申明。不同点:1.python比C++更简单,没有C++的private和public等关键词。2.在传参的时候python中self不做传参使用,而c++函数有几个参数要么传值,要么传引用,要么传地址。3.python中的self相当于c++下的this指针。代码比较python代码实现类#申明第一个类clas...原创 2019-05-05 21:14:51 · 335 阅读 · 0 评论 -
C++中常见stl关联容器的比较
关联容器c++11标准库中主要介绍了以下8种关联容器,其区别如下:set与multiset(有序,节点只存一个值)实现:平衡二叉树。优点:自动排序使得查找有良好性能。缺点:不能直接改变元素值,改变树则乱。set与multiset的区别:前者每一个元素只能出现一次,不允许重复;后者元素可以重复。map与multimap(有序,key/value可以任意)实现:平衡二叉树。优点:自动...原创 2019-05-05 21:35:23 · 387 阅读 · 0 评论 -
螺旋黄金分割算法
螺旋黄金分割算法class Point{public:void setX(double& x);void setY(double& y);void setZ(double& z);private: double x; double y; double z;};std::vector<Point> generateSpherePoints(...原创 2019-05-07 21:50:26 · 1202 阅读 · 0 评论 -
返回探针到原子k的距离内的原子索引列表
返回探针到原子k的距离内的原子索引列表std::vector<int> findNeighborIndices(atomList,int &probe,int &k){ std::vetcor<int> neighborIndices; double radius=atomList[k].radius+probe+probe; std::vecto...原创 2019-05-07 22:11:43 · 102 阅读 · 0 评论 -
Qt序列化和反序列化
定义:对象转换为二进制——>序列化二进制转换为对象——>反序列化序列化:Qt中实现对象序列化的类是QDataStream,写二进制到流中QFile file("file.dat"); //创建一个文档file.open(QIODevice::WriteOnly);//打开并只写QDataStream out(&file); //序列...原创 2019-05-15 15:10:42 · 3984 阅读 · 0 评论 -
leetcode3无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。测试输入:’“abcabcbb”’,没有重复字符的最长字符串是‘“abc”’,那么长度就是3。输出:3#include <vector>#include <string>#include <iostream>#include <map>using namespace std;int...原创 2019-08-13 15:26:32 · 135 阅读 · 0 评论 -
leetcode4最长回文子串
题目描述:给定一个字符串s,找到s中的最长的回文字符串。测试输入:“babad”输出:“bab”//最长回文字符串string findPlindrome(string s,int left,int right){ int n=s.size(); int l=left; int r=right; while (left>=0&&ri...原创 2019-08-13 15:43:39 · 98 阅读 · 0 评论 -
leetcode5反转整数
题目描述:给定一个32位有符号整数,将整数中的数字进行反转示例1:输入123,输出:321示例2:输入120, 输出:21#define INT_MAX 214748647#define INT_MIN (-INT_MAX-1)int reverse(int x){ int y=0; int n; while(x!=0) { n=x%10; if(y>INT_MA...原创 2019-08-13 15:54:23 · 89 阅读 · 0 评论 -
C++实现经典排序算法
经典的排序算法是面试必备,数量掌握尤其重要。下面笔者将从算法思想、算法时间空间复杂度、算法实现、动图进行逐个展开,最后以表格总结一、冒泡排序1.1 基本思想(1) 比较相邻的元素。如果第一个比第二个大,就交换;(冒泡策略)(2) 对每一对相邻元素作(1)的步骤,从开始第一对到结尾的最后一对,这样在最右端元素就会是最大的数;(3) 针对所有的元素重复以上的步骤,除了最后一个;(4) 重复...原创 2019-08-10 22:45:00 · 255 阅读 · 0 评论