C++代码
机械吴哥123
我很懒,不想写简介
展开
-
【c++】知识点积累
字符串小知识点:1、string::npos如果作为一个返回值(return value)表示没有找到匹配项(返回-1).if (string::npos == url.find(“http://”))return false;用作字符串参数时,表示直到字符串结尾string filename = "test.cpp"; cout << "filename : " << filename << endl; size_t idx = file原创 2020-07-25 09:14:54 · 110 阅读 · 0 评论 -
【vs2019MFC】msvcrtd.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 “int __cdecl invoke_mai
遇到这样的问题,是编译环境出了问题。我看B站上面的教学视频用的是vs2013版本的,在创建文件的时候选择的是win32项目而不是win32控制台项目。但是vs2019创建新项目的时候,默认创建的是win32控制台项目,所以你需要做的是改变编译环境。右键mfc选择属性将子系统中的控制台改为窗口编译成功再运行,就没问题了...原创 2020-07-03 18:09:39 · 2884 阅读 · 2 评论 -
【排序算法】计数排序-常规算法
#include <iostream>using namespace std;void Count_Sort(int* arr, int lens,int indexlens,int Max,int Min) { int* arr1 = new int[indexlens]; for (int i = 0; i < indexlens; ++i) arr1[i] = 0; int* arr2 = new int[lens]; for (int i = 0; i <原创 2020-05-18 20:02:50 · 99 阅读 · 0 评论 -
【排序算法】希尔排序-常规排序
#include <iostream>using namespace std;void shellSort(int R[], int n){ int i, j, d; int tmp; d = n / 2;//设置增量 while (d > 0)//出口 { for (i = d; i < n; i++)//对所有组采用直接插入排序 { tmp = R[i];//对相隔d个为止一组采用直接插入排序 j = i - d; while (j &g原创 2020-05-18 16:34:44 · 116 阅读 · 0 评论 -
【排序算法】快速排序-递归方法
#include <iostream>using namespace std;void Quick_sort(int* arr, int low, int high) { if (high <= low) return; int i = low; int j = high + 1; int key = arr[low]; while (true) { /*从左向右找比key大的值*/ while (arr[++i] < key) { if (i原创 2020-05-18 12:15:42 · 762 阅读 · 2 评论 -
【排序算法时间复杂度分析】递推式
关于包含递归调用的时间复杂度分析—以归并排序为例子T(n) = 2*T(n/2)+O(n) T(n/2) 代表一次递归 O(n)代表合并T(1) = T(1)T(n)/n = T(n/2)/(n/2) +O(1)令S(n)=T(n)/nS(1)=O(1)S(n)=S(n/2)+O(1) = S(n/4)+O(2) = S(n/8)+O(3) = S(n/s^k)+O(k)=S(1)+ o(logn)= o(logn)T(n)/n=S(n)= o(logn)T(n)=n*o(logn)原创 2020-05-17 20:03:27 · 1457 阅读 · 0 评论 -
【排序算法】归并排序-递归方法
#include<iostream>#include<ctime>#include<cstring>#include<cstdlib>using namespace std;void merge(int* data, int start, int mid, int end, int* result){ int i, j, k; i = start; j = mid + 1; //避免重复比较da原创 2020-05-17 19:43:17 · 303 阅读 · 0 评论 -
【排序算法】插入排序-常规方法
插入排序的时间复杂度最优为O(n)-当数组整体有序的时候最差时间复杂度为O(N^2)#include <iostream>#include <algorithm>using namespace std;void insert_sort(int arr[], int len){ for (int i = 1; i < len; i++) { int current = i; while (current > 0 && arr[cur原创 2020-05-11 17:35:29 · 84 阅读 · 0 评论 -
【排序算法】堆排序——常规方法
堆排序的时间复杂度是O(n*logn)#include <iostream>#include <algorithm>using namespace std;void max_heapify(int arr[], int start, int end){ //建立父节点指标和子节点指标 int dad = start; int son = dad * 2 + 1; while (son <= end) //若子节点指标在范围内才做比较 { if (so原创 2020-05-11 15:39:24 · 118 阅读 · 0 评论 -
【排序算法】选择排序
利用数组储存的元素进行选择排序的最优和最差的时间复杂度都是o(n^2),空间复杂度都是o(1).数组储存的元素进行选择排序是不稳定的 。例如10 10 7 2 8 2#include<iostream>using namespace std;void print_array(int* array, int length){ cout << "array:" << endl; for (int i = 0; i < length; i++) {原创 2020-05-10 17:36:59 · 82 阅读 · 0 评论 -
【排序算法】冒泡排序的三种方法
冒泡排序算法的最优时间复杂度为n,即当且只当元素本身就是按照从小到大的顺序排列的(这里默认冒泡排序从小到大排列)。当其中有任何一组数据不是按照从小到大排列,那么时间复杂度就是o(n^2).#include<iostream>using namespace std;void print_array(int* array, int length){ cout << "array:" << endl; for (int i = 0; i < length; i原创 2020-05-10 11:25:57 · 322 阅读 · 0 评论 -
C++实现演讲比赛小项目
对于这个小项目,有两个只是盲区1、定义了一个自定义数据类型的类之后,在后面创建的时候,自定义数据类型必须要有默认构造函数,如果在自定义的类里面定义了有参构造,就要自己定义一个默认构造函数。2、自定义map容器等容器的排序的时候,传进来的参数被系统默认以const类型的形式传进来的,所以在重载operator()的时候,也需要定义为const的类型。要不然会出错。因为operator()类型会修...原创 2019-12-17 23:17:18 · 130 阅读 · 0 评论 -
C++中对容器进行排序的三种方式
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;void Print(int v){ cout << v << endl;}bool Greater(int v1 ,...原创 2019-12-16 19:17:16 · 939 阅读 · 0 评论 -
C++list容器实现按照年龄升序排列,年龄相同按照身高降序排列,年龄身高相同对体重升序排列
感谢黑马先生!//对人的年龄进行升序排列,年龄相同对身高进行降序排列,年龄身高相同对体重升序排列#include <iostream>#include <list>#include <string>using namespace std;class Person{public: Person( string Name, int Age,i...原创 2019-12-15 10:27:36 · 1393 阅读 · 0 评论 -
C++二分递归版求数组的最大值或者最小值
#include <iostream>#include <algorithm>using namespace std;int MaxR(int a[], int lo, int hi){ if (hi == lo) { //cout << "1" << endl; return a[lo]; } else { in...原创 2019-12-13 17:20:03 · 727 阅读 · 0 评论 -
C++STL——vector容器实现二维数组的输出
#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;void test01(){ vector<vector<int>> v; vector<int> v1; v...原创 2019-12-11 20:32:20 · 1963 阅读 · 0 评论 -
C++STL——vector初探
WTF?????还有这种操作???不得不说,C++大法好!!!#include <iostream>#include <vector>#include <algorithm>using namespace std;void Showout(int a){ cout << a << endl;}void test0...原创 2019-12-11 19:50:30 · 82 阅读 · 0 评论 -
C++实现数组类模板
本段代码是根据黑马先生教学的内容手撕出来的。特此感谢黑马先生内容包含类数组类的设计,其中有构造函数,析构函数,拷贝函数,operator重定义=操作符,以及尾插和尾删法的运用。hpp文件内容#pragma once#ifndef MyArray#include <iostream>#include <string>#include <fstream>...原创 2019-12-11 16:56:10 · 511 阅读 · 0 评论 -
c++冒泡排序的类模板的实现
算法:基于特定的计算模型,旨在解决某一信息处理问题而设计的指令序列。算法的特性:确定性,有穷性、正确性。设计算法的时候,需要考虑算法退化(即算法的边界情况)从而使得算法具有鲁棒性,并且还要考虑算法的重用性。1、在下面的冒泡排序中,Size<0或者>131000就说边界条件。2、将冒泡排序写成类模板,就解决的算法的重用性。3、在循环里面添加bool类型的数据,就是考虑当数组本身...原创 2019-12-10 22:28:05 · 399 阅读 · 0 评论 -
C++实现输入任意大小的整形数组并且利用冒泡排序法进行升序排序并且进行二分查找
#include <iostream>#include <string>using namespace std;int main(){ int n; cout << "请输入要排序的整数的个数:" << endl; cin >> n; int* p; p = new int[n]; cout << "请...原创 2019-12-04 15:34:07 · 1097 阅读 · 0 评论 -
C++对类(或者结构体)中字符数组赋值时,出现表达式必须是可修改的左值的问题
最近自己遇到了这类问题,在csdn上找到了很多大神给的解答,非常到位特别感谢这位:https://blog.csdn.net/JQ_AK47/article/details/53169799问题描述:在C++中的结构体或者类中定义了一个字符数组,那么在类(或者结构体)外去赋值的时候,会出现一些问题:如下图所示:Person p = {“张三”,18};//正确p.m_Name = “张...原创 2019-11-30 11:28:41 · 3061 阅读 · 1 评论 -
C++子类和父类,引用类和被引用类之间的顺序关系
子类一定要在父类后面!!!被引用的类一定要在引用的类的前面!!!原创 2019-11-28 22:16:32 · 298 阅读 · 0 评论 -
C++多态的练习——编写一个计算器项目
要想成为一个合格的程序员,必须要有多态的思想。计算器项目剖析:1、输入一个数字,然后输入一个操作符,接着输入一个数字,按等号输出结果2、四则运算有四种,+ - * / ,输出都是对输入的两个数进行操作,因此骨架相同皮肉不同。可以用类来做#include <iostream>#include <string>using namespace std;cl...原创 2019-11-28 14:17:37 · 352 阅读 · 0 评论 -
C++VS2019中新建自定义模板与删除自定义模板
如果经常项目需要用到相同的一些代码,如头文件,命名空间等,可以考虑创建一个模板,以后新建项目时可以直接选用该模板。下面跟着我一起来看看怎样新建一个模板和怎样删除一个模板。为了保证模板里面没有其他的东西,首先文件>>新建>>项目 建一个新的项目,建好之后在源文件里面添加新建项,选择C++文件,然后再写好自己想要建立的模板代码。如下图所示是我要创建的模板代码然后点击 项...原创 2019-11-28 10:30:17 · 5442 阅读 · 5 评论 -
C++中继承的父类与子类的关系
转载 2019-11-27 15:49:39 · 554 阅读 · 0 评论 -
C++类引用中的构造函数与析构函数的执行顺序练习
引用的类比被引用的类后构造,先析构#include <iostream>#include <string>using namespace std;class Phone{public: string _PhoneName; Phone(string name) { _PhoneName = name; } ~Phone() { cout ...原创 2019-11-27 11:27:36 · 144 阅读 · 0 评论 -
C++中->运算符与.运算符的具体使用
->和 . 都是对结构体进行访问的时候使用,但是有区别。->是用指针访问结构体数据的时候使用,例如如下代码块中:ShowAddress(people *a )函数,传进来的形参是一个指向结构体a的指针,因此想通过该指针去访问里面的数据的时候就应该用a->name,a->age,a->address.ShowName(people *a)函数,传进来的形参是结构体...原创 2019-11-26 10:05:49 · 786 阅读 · 0 评论 -
C++的三种交换数值的方式(值传递、地址传递、引用传递)
#include <iostream>using namespace std;//值交换void swap1(int a, int b){ int temp = a; a = b; b = temp;}//地址交换void swap2(int* a, int* b){ int temp = *a; *a = *b; *b = temp;}//引...原创 2019-11-25 21:01:55 · 2539 阅读 · 0 评论 -
C++通讯录管理系统
总结一下自己的查漏补缺:1、while里面利用一个return 0;可以终止无限循环2、主函数里面的函数调用自定义函数传入的参数用&取出地址,但是定义函数的时候利用* 去接收&传过来的地址。我之前一直弄错。3、此类里面利用结构体嵌套。通讯录有很多人,每个人有名字,年龄等;因此首先定义一个结构体储存个人信息。然后定义一个结构体里面包含人数这个数组。这里有个不懂的问题,结构...原创 2019-11-25 17:05:19 · 421 阅读 · 0 评论 -
C++常见谬误总结(1)
1、&& 和 & ,&& 是短路运算符,当第一判断为真的时候,就输出,不再判断后面那个的真假,&则需要判断两个,因此运算效率前者高。|| 和!效果相同,但是使用的时候需要注意一些,如果是判断区间,则只能用&,否则判断完前面那个之后,后面就不判断了。例如:int a = 600;if(a>200 & a< 500);//...原创 2019-11-22 15:53:25 · 146 阅读 · 0 评论 -
C++自定义函数类型——typedef的使用
该函数的用法需要注意的一点就是函数的返回值返回的时候,返回类型不能使用自己定义的函数名称,因为不是内置函数,所以用使用起来会报错,返回的类型需要和你定义的形参的类型相同,本文定义的Name是char*类型的,所以返回类型也是这个。还有一点需要注意的是,如果传入的字符串是在程序里面给定的,那么形参的类型应该是const类型的,因为你给定任意初值的字符串在代码运行的时候,都是以const类型来处理的...原创 2019-11-21 17:47:18 · 931 阅读 · 0 评论 -
C++结构体的应用
注意,第17行这里结构体类型定义的形参只能是引用类型的,memcpy与strcpy的比较:memcpy是复制地址内的内容,例如如下代码所示:从(char*)&S开始赋给Array,地址赋值的大小是sstrcpy只能复制字符串,其他的复制字符串以外的内容。//结构体作为类型进行写入和读出#include <iostream>#include <string>...原创 2019-11-21 17:01:37 · 135 阅读 · 0 评论 -
C++数据类型之结构体的练习(用到结构体的赋值,利用结构体元素排序以及查找)
特别注意:1、strcmp函数是判断两个字符串数组的大小的,有==0 和!= 0 两种情况。2、//制作一个简易电话簿,具有输入、存储、排序、管理、查找的功能#include <iostream>using namespace std;struct PeoplesImage{ char Name[20]; char PhoneNumber[20]; char A...原创 2019-11-20 22:26:05 · 188 阅读 · 0 评论 -
C++动态数组的创建
动态数组,利用new为整型指针开辟一个任意输入的n的大小的空间,使用完成之后利用delete []p 去释放这个空间。这种方法解决了我脑子里已知不能使用动态数组的疑惑。#include <iostream>using namespace std;int main(){ cout << "请输入数组的长度:" << endl; int n; ...原创 2019-11-20 20:39:45 · 523 阅读 · 0 评论 -
C++函数重载与引用的较好的练习实例
本实例能较好的深入了解重载函数的用法,并且对引用的使用也有很好的锻炼作用。//利用函数实现返回输入内容的0的个数,并且返回最大值#include <iostream>using namespace std;int cj(unsigned i, int& j);int cj(int i, int& j);int cj(double i, int&...原创 2019-11-19 22:30:19 · 174 阅读 · 0 评论 -
C++实现字符串数组的计数功能总结
由于字符串的长度计算为:str.size():或者 str.length();向量的长度为:vector.size();以上两者比较简单,所以不予讨论,下面就字符串数组的有关长度进行相应的讨论。#include<iostream>#include <string>using namespace std;int main(){ const char* ...原创 2019-11-19 16:24:10 · 773 阅读 · 0 评论 -
C++实现包含空格、标点、字符、数字的字符串的逆序输出,并且还可以实现一句语言中每个单词的倒序输出
简介:本C++代码能够实现任意输入的字符的逆序输出,代码的后半部分可以实现一句英文语句的单词的倒序输出。#include <iostream>#include <string>using namespace std;int main() { cout << "请输入一行字符串: " << endl; string str; getl...原创 2019-11-19 14:30:19 · 1376 阅读 · 2 评论 -
含有空格或者逗号的字符串反转最有效的办法——栈
用栈实现带有空格或者逗号的字符串的反转//字符串反转,整型数字反转#include <iostream>#include <string>#include<stack>using namespace std;int main(){ cout << "请输入一行字符串:" << endl; string str; g...原创 2019-11-18 18:54:41 · 486 阅读 · 0 评论 -
C++知识结构图
C++知识结构图图片原文链接:http://lib.csdn.net/computer2745/278375/chart/C%2B%2B[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Junw0Ymh-1573262841739)(http://lib.csdn.net/computer2745/278375/chart/C++)]@TOC欢迎使用Markdow...转载 2019-11-09 09:32:36 · 378 阅读 · 0 评论 -
【C++】字符串替换问题
【C++】字符串替换问题核心思想,在不另外占内存的情况下,怎样替换一个字符串中的指定元素,实例代码为替换空字符串为%20.示例代码如下:#include <iostream>using namespace std;class Solution {public: void replaceSpace(char *str) { if (str == NULL)//判断...原创 2019-10-25 13:56:31 · 211 阅读 · 0 评论