
C++基础算法
文章平均质量分 73
xiamentingtao
这个作者很懒,什么都没留下…
展开
-
win10 平台VS2019最简安装实现C++/C开发
这两天一直在安装vs2015,总是卡在visual studio 2015 出现安装包丢失或损坏的现象,尽管按照网上很多方法尝试解决,但是一直不行。算了。还是使用最新版的VS 2019安装,没想到很顺利。下面总结一下在win10平台上最简安装VS2019,实现C++开发的全过程。1.下载 Visual Studio只需要下载社区版本即可。 【下载】2. 下载完成后,打开Visual Studio 安装程序运行你下载的引导程序文件以安装 Visual Studio 安装程序。 这个新.原创 2021-08-28 10:48:11 · 4366 阅读 · 0 评论 -
delete与delete[]的区别
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2)转载 2015-10-08 12:40:23 · 596 阅读 · 0 评论 -
CVTE2016校招试题摘选
今年的题分两部分,时间为晚上7:00-9:30,题目分不定项选择与两道编程题。下面是我自己抄下来的一部分题,尽飨读者。1.堆排序属于下面哪种排序方法?A、选择排序 B、插入排序、C、交换排序 D、归并排序答案: A2. 用RSA算法加密时,已知公匙是(e=7,n=20),私匙是(d=3,n=20),用公匙对消息M=3加密,得到的密文是?A . 13 B.12原创 2015-09-12 21:45:31 · 2268 阅读 · 0 评论 -
C++成员变量的初始化顺序问题
先来看两道题:// count algorithm example#include // std::cout#include // std::count#include // std::vectorusing namespace std;class A {public: A() { cout << "in A()" << endl; }};c原创 2015-09-08 17:00:19 · 624 阅读 · 0 评论 -
寻找第K大的数字
寻找第k大的数字,有很多方法,最基本的就是将数组按照从大到小的顺序排列,找出第k个元素即可。但是这种方法的时间复杂度为o(nlog(n)),我们还能找到更好地方法。下面我们将介绍另外两种办法,一种是基于快排Partition的方法,一种是基于partial_sort的方法。基于快排partition的查找法利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于原创 2015-09-08 10:12:33 · 1730 阅读 · 0 评论 -
C++ STL的查找算法
假设你有一个序列容器,或者有一对迭代器标识了一个区间,现在你希望在容器中查找一些信息,这样的查找工作如何进行呢?你的选择往往是: count,count_if,find,find_if,binary_search,lower_bound,upper_bound,equal_range.该如何选择呢? 现在,我们假设你有了一对迭代器,他们指定了一个被选择的区间。 在选择具体的策略市,需要考虑由迭原创 2015-09-08 15:48:56 · 1196 阅读 · 0 评论 -
寻找第K大的数字
//寻找第k大的数字#include using namespace std;//快速排序的划分函数int partition(int data[],int i,int j)//将>=x的元素换到左边区域//将<=x的元素换到右边区域{ if(data==NULL||i<0) throw std::exception("invalued parameter"); int原创 2015-05-20 23:16:27 · 613 阅读 · 0 评论 -
迎战校招训练题
校招训练原创 2015-09-18 23:25:02 · 1012 阅读 · 0 评论 -
二分查找法(递归与循环实现)
问题: 给定一个排序数组和一个数k,要求找到第一个k的位置和最后一个k的位置解析:由于给定的数组是从小到大排序的,故可以按照二分查找法来找,下面分别从递归和循环两种方法来阐述://递归方法int GetFirstK(int* data, int length, int k, int start, int end){ if (start > end) return -1;原创 2015-09-06 17:39:07 · 864 阅读 · 0 评论 -
n!后面有多少个0(转载)
我的思路: 从”那些数相乘可以得到10”这个角度,问题就变得比较的简单了。 首先考虑,如果N的阶乘为K和10的M次方的乘积(N!=K∗10MN!=K*10^M),那么N!末尾就有M个0。 如果将N的阶乘分解后,那么N的阶乘可以分解为: 2的X次方,3的Y次方,5的Z次方的乘积。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M =转载 2015-09-06 22:02:18 · 869 阅读 · 0 评论 -
京东2016校招编程题
记得有一个大题,说的是给定一个n*n的矩阵,要求从1开始填充矩阵,最后的矩阵是蛇形的。即如下:n=3, 7 8 1 6 9原创 2015-09-25 12:06:40 · 943 阅读 · 0 评论 -
[C++基础]goto的用法
#include #include int main(){ int n=7; number2: printf("hello world\n"); if (n==7) { n=8; printf("n=7 start\n"); goto number0; printf("n=7 end\n"); } else { printf("n=8 start转载 2015-09-08 21:53:34 · 1038 阅读 · 1 评论 -
C++11系列学习之六-----for
前言 C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是C++能有多好,心里别提多酸了。这次C++11不负众望,再也不用羡慕别家人的for range了。使用场景ex1:遍历字符串std::string str = "hello, world"; for(auto ch转载 2015-09-08 20:30:17 · 615 阅读 · 0 评论 -
C++定义隐式转换函数,将类转换为内部的一个成员变量
C++中单参数构造函数若不声明为explict,在合适的场合可以产生隐式转换:由成员变量类型转换为类类型。 下面的代码展示如何实现反向的转换: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 void changeFontSiz转载 2015-07-22 10:23:28 · 865 阅读 · 0 评论 -
使用getline读入
直接上代码:第一份:从cin 最后读入多行数字,每行2个。当输入完毕后,按2次回车结束#include#include #include #include #include #include #include #include using namespace std;void main(){ string str; vector result; wh原创 2015-08-10 22:44:36 · 1252 阅读 · 0 评论 -
c++读取文件–结束条件的判断
转载:http://blog.sina.com.cn/s/blog_623e3c050100neei.html在使用C/C++读文件的时候,一定都使用过eof()这个函数来判断文件是否为空或者是否读到文件结尾了,也会在使用这个函数的过程中遇到一些问题,如不能准确的判断是否为空或者是否到了文件尾,以至于有些人可能还会怀疑这个函数是不是本身在设计上就有问题。 先来看看如下这段代码: #转载 2015-06-06 23:02:49 · 5455 阅读 · 1 评论 -
C++的字符串分割函数
转载:http://blog.youkuaiyun.com/shanzhizi/article/details/17189267C++的字符串没有分割函数,因此需要自己写方便使用。而受到开发工具的影响,有很多用起来比较麻烦啦,下面这个比较不错奥。用STL进行字符串的分割 涉及到string类的两个函数find和substr:1、find函数原型:size_t find ( co转载 2015-06-06 23:06:36 · 756 阅读 · 0 评论 -
最常见的读入数据方法集锦
我在程序编写过程中,经常会遇到读入数据的问题,大概这类问题分为两种,一种是从控制台读取,一类是从文件读取,我这里收集了一些常见的读取方法,以供参考。控制台读取:情景一、有一个程序要求我们输入一个数组,数组的个数已给定或者要求先给出个数,然后输入数据。代码:#include #include #include using namespace std;int main(){原创 2015-09-18 15:52:45 · 736 阅读 · 0 评论 -
二维数组的指针复习
最近一次的考试都是指针,真是给我深深上了一课,所以我特此复习一下指针方面的知识。二维数组的指针原创 2015-09-19 18:58:00 · 704 阅读 · 0 评论 -
偶数哥德巴赫猜想
已知不小于6的偶数都可以分成两个素数之和。请编写6到100000的所有偶数的分解,若有一个偶数可以分解成多个素数之和,只需写出一种即可。#include #include using namespace std;bool isprime(int n)//判断素数{ int i = 2; while (i < n) { if (n%i == 0) break;原创 2015-09-21 23:00:43 · 1726 阅读 · 0 评论 -
c++实现解析文件路径
注意:本实现只能解析类似linux下的路径,即“/data/a.txt”,而不能解析“c:\a.txt” 或者“c:\\a.txt”,但是应该很容易扩展改写实现此功能。FilepathParse.h#include using std::string;void parseFilepath(string filepath, string &path, string &filen原创 2017-04-18 22:05:32 · 3068 阅读 · 0 评论 -
C++ STL中set底层实现方式
Q:STL中set底层实现方式? 为什么不用hash?A: 第一个问题:set底层实现方式为RB树(即红黑树)。 第二个问题: 首先set,不像map那样是key-value对,它的key与value是相同的。关于set有两种说法,第一个是STL中的set,用的是红黑树;第二个是hash_set,底层用得是hash table。红黑树与hash table最大的转载 2017-02-17 16:53:41 · 20559 阅读 · 1 评论 -
C++中虚析构函数的作用
C++中的虚析构函数到底什么时候有用的,什么作用呢。总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的。我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:转载 2017-02-17 16:48:26 · 2306 阅读 · 0 评论 -
c++ 虚函数的实现机制
转载自:http://blog.youkuaiyun.com/jiangnanyouzi/article/details/37208071、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class转载 2017-02-17 16:37:38 · 663 阅读 · 0 评论 -
fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案
昨天,尝试一个项目,遇到了如下的问题。先来还原一下:头文件test.h#pragma once#include #include using namespace Eigen;using namespace std;class point2{public:point2(int x1,int y1):x(x1),y(y1){}point2& operator+原创 2017-01-11 10:35:53 · 70908 阅读 · 10 评论 -
C++给函数传数组参数C++给函数传数组参数
C++给函数传数组参数在C++中,如果要给一个函数传入一个数组,一般都是传入两个参数一个数组指针和一个数组大小例:void print_1 (int n, int *datas ){ for (int i = 0; i { std::cout } std::cout }对这个函数,我们可以这样转载 2016-10-07 16:14:52 · 1282 阅读 · 0 评论 -
C++标准库与Java基础类对照表
一、集合类 对象的集合,指如链表,数组,队列这一类的数据结构。在C++标准库中把这些成为Container, 在Java中称为Collection。 C++STL常用Container: vector, list, map, set, queue, stack, priority_queueJava基础类:ArrayList, HashMap, HashSet转载 2016-10-07 12:13:07 · 2585 阅读 · 0 评论 -
fwrite,fread and fprintf,fscanf的一些使用体会
这周一直在完成一个任务,就是将训练出的多个model写成一个model。其中我们使用了c语言的读写方法,搞了一星期, 挖了很多坑,最终都铲平了。下面列举出若干有用的知识。 1.fwrite,fread VS fprintf,fscanf的区别 fwrite,fread 读写的时候,我发现不管使用FILE* pFile = fopen(“myfile.bin”, “wb”);无论是使用“wb”还是原创 2016-05-06 20:59:35 · 4889 阅读 · 0 评论 -
C++ limits头文件的用法(numeric_limits)
初学C++的时候,对这个模板很陌生,不知道它到底是做什么用的,今天拿起《C++标准程序库》,出现了它的讨论,所以决定好好研究一番。1. numeric_limits是什么?(A)《C++标准程序库》:一般来说,数值型别的极值是一个与平台相关的特性。C++标准程序库通过template numeric_limits提供这些极值,取代传统C语言,所采用的预处理常数。新的极值概念转载 2016-04-17 18:31:58 · 2202 阅读 · 0 评论 -
变长参数
转载自:http://blog.youkuaiyun.com/tht2009/article/details/7019635 变长参数 设计一个参数个数可变、参数类型不定的函数是可能的,最常见的例子是printf函数、scanf函数和高级语言的Format函数。在C/C++中,为了通知编译器函数的参数个数和类型可变(即是不定的、未知的),就必须以三个点结束该函数的声明。// print转载 2016-04-10 10:28:29 · 615 阅读 · 0 评论 -
mutable、volatile的使用
(1)mutable 在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。struct ST{ int a; mutable int b;};const ST st={1,2};st转载 2016-04-10 10:20:51 · 740 阅读 · 0 评论 -
求二叉树的深度和宽度
// 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。#include "stdafx.h"#include #include using namespace std;struct BTNode{char m_value;BTNode *m_left;BTNode *m_right;};//先序创建二叉树void Cre转载 2015-12-16 21:10:02 · 1293 阅读 · 0 评论 -
自定义String
#include #include using namespace std;class String{public: String(); String(const char* str); ~String(); String(const String& rhs); String& operator=(const String& rhs); friend String operat原创 2015-10-08 12:31:12 · 648 阅读 · 0 评论 -
strcpy_s、sptintf_s与strcat_s的使用
strcpy_s、sptintf_s与strcat_s是strcpy、sptintf与strcat的安全版本,均是通过指定缓冲区长度来避免存在的溢出风险。strcpy_s 与strcpystrcpy_s和strcpy函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的原创 2015-11-19 12:12:42 · 2213 阅读 · 0 评论 -
C++类的内联成员函数应放在哪
今天复习C++ Primer的时候,看到了关于C++类的内联成员函数的放置,应该放在头文件中。那么这到底是为什么呢?仅仅是一种代码规范问题还是必须这样做呢?下面我就来讲讲我自己的理解吧。要彻底理解这个问题,首先就要了解下函数的声明和定义了。我们知道,函数可以在多处声明,但只能在一个地方定义,不然就会出现重定义。大部分函数默认是外部链接,而inline函数默认为内部链转载 2015-11-15 10:50:03 · 1130 阅读 · 0 评论 -
十月读书心得
1.sizeof与strlen的区别。#include using namespace std;void main(){ cout << sizeof("hello") << endl;}答案: 6原因: “hello”={‘h’,'e','l','l','o','\0'};共六个字节。那么sizeof与strlen有什么区别呢?总结起来:1). sizeof原创 2015-10-13 09:39:04 · 871 阅读 · 0 评论 -
C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化。 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。#include using namespace std;转载 2015-06-04 20:20:56 · 508 阅读 · 0 评论 -
土豆春季实习试题之惨烈教训
今天做土豆的春季C++实习生招聘试题,很多不应该错的错了,在此挑出一些重要的错误,供自己参考,以免以后再犯。一、一道编程题,很简单,但是错了。题目: 输入一个数组,求它的逆序数组。如输入: 1 2 3 4,输出 4 3 2 1它给出了框架,让填写部分代码:#include#include #include using namespace std;class exa原创 2015-06-03 11:18:01 · 1035 阅读 · 0 评论 -
大数据相加(转载)
转载:http://www.du52.com/text.php?id=411在这个大数据的年代里,我们不可避免会遇到两个超越正常数据类型(如int,long,long long)的整数相加。显然两个大数据已经不能使用传统的加号直接相加,但是相加的原理仍然是不变的,就是简单的同位相加,超9进1.接下来我们将叙述用数组保存的大数据相加的代码。/* 大数相加:超越数据类型范围的也可以进行相加转载 2015-06-04 15:40:35 · 1562 阅读 · 0 评论 -
C++字符输入getchar()和字符输出putchar()
转载:http://c.biancheng.net/cpp/biancheng/view/117.html C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和putchar函数。 putchar函数(字符输出函数)putchar函数的作用是向终端输出一个字符。例如: putchar(c); 它输出字符变量c的值。【例3.2】输出单个字符转载 2015-04-19 20:20:12 · 3348 阅读 · 0 评论