![](https://img-blog.csdnimg.cn/20200515104916977.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++基础编程
之前准备保研考试的时候练习的C++基础编程题目,均为完整代码。
杨小浩浩hh
计算机硕士在读,研究方向:机器学习。
展开
-
【C++基础编程】#030 C++各代版本以及主要区别
文章目录版本更替1. C++982. C++033. C++114. C++145. 未来版本C++11主要区别和大家平时用的APP等一样,编程语言每隔一段时间也需要重新制定标准。C++作为老牌编程语言,有着丰富的STL库以及比较规范的语法,是一个比较受欢迎且适合初学者接触编程时的第一个语言,本文简单介绍一下C++的主要版本更替,以及C++11标准和之前的有何区别。版本更替1. C++98第一版ISO/IEC 14882:1998公开于1998年,通称C++98。2. C++03第二版标准IS原创 2020-06-28 13:36:30 · 7103 阅读 · 0 评论 -
【C++基础编程】#029 for循环中带冒号(:)用法简介
基本用法正常我们想要输出一个数组的全部元素时,需要采用以下的方法://随机定义的数组int array[10] = { 54, 23, 78, 9, 15, 18, 63, 33, 87, 66 };for (int i = 0; i < 10; i++) { cout << array[i] << " "; //输出:54 23 78 9 15 18 63 33 87 66}在C++11中,我们可以在for循环填加冒号 : 来简化这一过程://随机定义的原创 2020-06-15 16:21:00 · 13187 阅读 · 7 评论 -
【C++基础编程】#028 lower_bound()和upper_bound()函数简介
文章目录简介lower_bound()函数官方定义upper_bound()函数官方定义举例说明参考资料简介lower_bound(int* first,int* last,val);C++ STL库 lower_bound() 函数在first和last中的前闭后开区间,进行二分查找。返回从first开始的第一个大于或等于val的元素的地址。如果所有元素都小于val,则返回last的地址。注意:数组必须是排好序的数组。与之对应:upper_bound(int* first,int* last,v原创 2020-06-15 15:39:14 · 226 阅读 · 1 评论 -
【C++基础编程】#027 利用*max_element()和*min_element()函数返回数组最大值和最小值
文章目录简介max_element()函数函数官方定义举例说明min_element()函数函数官方定义举例说明参考资料简介在做项目或刷题的过程中,经常需要返回数组的最大值和最小值。若自己写会有一些麻烦,因此可以用C++ STL库 *max_element() 和 *min_element() 函数来返回数组的最大值和最小值。注:需引入头文件:#include<algorithm>max_element()函数函数官方定义template <class ForwardIt原创 2020-06-15 14:58:05 · 986 阅读 · 1 评论 -
【C++基础编程】 #026 sort()函数简介
文章目录背景简介用法头文件函数参数举例说明参考背景排序是最基础的算法之一,常见的排序有冒泡排序、选择排序、插入排序、快速排序等等,其平均时间复杂度由O(n2)O(n^2)O(n2)到O(nlog2n)O(nlog_2n)O(nlog2n)不等。然而在做项目或者刷题时,要自己实现一个排序算法相对来说麻烦一些,且有些时候不是很必要。因此,我们可以直接调用C++的库函数sort()。简介sort()函数时C++自带的函数,用于数组的排序。使用的排序方法是类似于快速排序的方法(既有快速排序又有与其它排原创 2020-06-15 13:17:12 · 380 阅读 · 0 评论 -
【C++基础编程】#025 关键字auto简介
文章目录背景简介用法自动判断被声明变量类型在vector容器中使用保存lambda表达式类型的变量声明在模板函数中使用参考资料背景auto是C++中的关键字。自C++11以来,auto关键字用于两种情况:声明变量时根据初始化表达式自动推断该变量的类型;声明函数时函数返回值的占位符。简介auto可以在声明变量时根据变量初始值的类型自动为此变量选择匹配的类型。举例:对于值x=1;即可以声明:int x = 1或long x = 1,也可以直接声明auto x = 1。用法自动判断被声明变原创 2020-06-15 10:33:47 · 751 阅读 · 0 评论 -
【C++基础编程】#024 iota()函数用法简介
文章目录背景函数定义使用方法1. 对于数组2. 对于vector容器参考资料背景在使用数组时,有时需要递增地给数组中每个元素赋值。此时使用iota()函数就十分方便。名称来源:itoa 是 希腊语的第九个字母,读[aɪ’otə]这个名称是从APL编程语言借鉴过来的。函数定义对起点first到终点last的整数(均为指针类型)进行递增+1的赋值。template <class ForwardIterator, class T> void iota (ForwardItera原创 2020-06-09 12:18:14 · 1826 阅读 · 0 评论 -
【C++基础编程】#023 如何获得一个整型int的位数
背景在刷题的过程中,很多时候需要知道一个int整型的位数。比如判断回文整数等等。这时可以使用整除10000, 1000, 100这种方法 ,不过比较麻烦。可以采用将int转换为string类型的字符串,再返回字符串长度即可。具体方法利用to_string()函数转化为string类型的字符串;利用string.size()函数输出字符串长度。举例说明:#include<iostream>#include<string>using namespace std原创 2020-06-09 11:54:10 · 3809 阅读 · 2 评论 -
【C++基础编程】#022 字符串string和整型int相互转换基本方法
1. int 转化为 string利用to_string()函数即可。格式:string str = to_string(number);需引入头文件:#include<string>举例说明:#include<iostream>#include<string>using namespace std;int main() { int number = 1001; string str = to_string(number); cout &原创 2020-06-09 11:42:23 · 344 阅读 · 1 评论 -
【C++基础编程】#021 如何防止vs运行完成时输出结果一闪而过
前言相信对于很多C++新手而言,初步使用visual studio编程时都会遇到一个问题:运行完,代码也没有报错,但是结果一闪而过,看不到输出值。这种情况下,解决方法如下:解决方法在main()函数末尾添加一行代码system("pause");即可。举例说明:#include<iostream>using namespace std;int main() { cout << 5201314 << endl; system("pause原创 2020-06-07 16:23:46 · 363 阅读 · 0 评论 -
【C++基础编程】#020 函数传递值和传递引用&时的区别
文章目录函数直接传递值(变量)函数传递引用(利用&)两者区别函数直接传递值(变量)这种方式传给形参的是变量的值,传递是单向的。如果在执行函数器件形参的值变了,不会回传给实参。也就是说如果想要实现一个这样的功能:调用函数后实参的值随之改变。显然此方式无法实现。举个例子:执行swap函数后,想要主函数内的变量值变化,用上述方式写出代码:#include <iostream>using namespace std;int main(){ void swap(int原创 2020-06-07 16:17:16 · 193 阅读 · 0 评论 -
【C++基础编程】 #019 STL基本模板库unordered_set集合基本操作
文章目录背景基本用法1. 引入头文件2. 初始化unordered_set3. 向set集合中插入元素4. 查找set集合中的值5. count()函数用法背景unordered_set是C++STL基本模板库中的一个常用的库。其内部原理也是一个哈希表hashmap,同时插入相同的值是没有效果的,只记录不同的值。基本用法1. 引入头文件#include<unordered_set>2. 初始化unordered_set格式:unordered_set<type>s原创 2020-06-06 22:18:37 · 421 阅读 · 0 评论 -
【C++基础编程】#018 数组初始化:int a[10] 和 int *a = new int[10]区别
数组是C++中最常见的数据结构之一。一般来说,有两种方法初始化一个数组(假设数组长度为10):int a[10];int *a = new int[10];下面简单介绍一下这两种方法的区别:区别一前者系统会在工作栈中分配空间,系统会自动实现内存的分配和回收。后者系统会在工作堆中分配空间,系统一般不会自动实现内存的回收,如果数组a使用完毕,需要delete[] a来删除数组a占的内存空间,否则可能会造成内存泄露。区别二前者数组长度一般在编译时就固定了,若int a[10],则数组长原创 2020-06-02 14:18:44 · 1499 阅读 · 0 评论 -
【C++基础编程】#017 计算字符串长度:length(), size(), strlen()介绍
本文介绍如何计算字符串长度,共介绍三种方法,分别用length(), size(), strlen()实现文章目录length()介绍size()介绍strlen()介绍length()介绍利用length()函数时,直接用字符串调用函数即可,格式如下:string.length()举例:#include<iostream>using namespace std;int main() { string str = "CSDN"; cout << str.l原创 2020-06-02 13:49:42 · 1250 阅读 · 0 评论 -
【C++基础编程】#016 计算数组长度:sizeof 运算符介绍
本文首先介绍C++中sizeof运算符的具体用法,再利用sizeof计算数组长度。文章目录sizeof 运算符计算数组长度sizeof 运算符sizeof()用于计算C++中数据类型的字节大小,具体应用如下:#include<iostream>using namespace std;int main() { string str = "ab"; int num = 100; cout << sizeof(string) << endl;原创 2020-06-02 12:21:44 · 602 阅读 · 0 评论 -
【C++基础编程】#015 STL标准模板库vector基本操作
文章目录背景基本操作1. 引入头文件2. vector初始化3. 向vector加入数据4. 计算vector长度5. 弹出vector最后一个元素背景在C++中,数组是比较常见的数据结构,但数组在定义时就要声明数组长度,因此在某些场合不是很实用。本文介绍STL库vector向量的一些基本操作。vector具有可变长、直接输出包含的元素个数等优点,比较便捷。基本操作1. 引入头文件#include<vector>2. vector初始化格式:vector<type>v原创 2020-05-28 13:26:37 · 856 阅读 · 0 评论 -
【C++基础编程】#014 error: C2679 没有找到接受“std::string”类型的右操作数的运算符
问题描述在visual studio上编写C++代码时发生了如下的报错:错误 C2679 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)只执行比较简单的代码测试如下时会发生错误:#include<iostream>using namespace std;int main() { string a = "CSDN"; cout << a << endl; return 0;}问题解决原创 2020-05-28 12:50:10 · 2042 阅读 · 0 评论 -
【C++基础编程】#013 STL基本模板库unordered_map哈希表基本操作
背景原创 2020-05-27 23:17:56 · 420 阅读 · 0 评论 -
【C++基础编程】#012 return;return 0;return NULL;区别
在C++编程中要根据函数类型返回指定的值,常见的返回值包括以下几种:函数返回值为void时,用return;或者不写即可。举例说明:void test(){ return;}函数返回值为int时,用return 0;举例说明:int test(){ return 0;}函数返回值为指针类型int* 时,用return NULL;举例说明:int* test(){ return NULL;}...原创 2020-05-26 11:38:55 · 1400 阅读 · 0 评论 -
【C++基础编程】#011 二叉搜索树的创建、插入,求二叉树所有路径、最短路径、反转二叉树。
问题描述本文利用C++实现了以下功能:二叉搜索树的创建二叉搜索树的插入求二叉树所有路径求二叉树最短路径反转二叉树小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现用C++类(class)实现,共包含三个文件:tree.h 函数体声明tree.cpp 函数实现main.cpp 测试代码文件一 tree.h#pragma once#ifndef TREE_H#define TREE_H#include<原创 2020-05-15 22:26:11 · 291 阅读 · 0 评论 -
【C++编程基础】#010 二叉树的前序、中序、后序遍历非递归方法,得到最小树高度。
问题描述本文介绍了一些二叉树的“进阶”操作,以C++语言实现,主要包括以下功能:反转二叉树二叉树的前序遍历非递归方法二叉树的中序遍历非递归方法二叉树的后序遍历非递归方法得到二叉树的最小树高小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现用C++类(class)实现,共包含三个文件:solution.h 函数体声明solution.cpp 函数实现main.cpp 测试代码文件一 、solution.h#ifn原创 2020-05-15 22:14:48 · 286 阅读 · 0 评论 -
【C++编程基础】#009 二叉树操作:创建、前序中序后序层次遍历、得到树高、宽、节点数量、只根据前序中序或中序后序生成二叉树。
问题描述二叉树是一种比较基础的数据结构,用C++中的结构体可以实现,以下的代码利用C++完成了以下功能:二叉树的创建二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的层次遍历得到二叉树的高度得到二叉树的结点个数通过前序和中序遍历生成二叉树通过中序和后序遍历生成二叉树小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现用C++类(class)实现,共包含三个文件:tree.h 函数体声明tree.cpp 函数原创 2020-05-15 21:51:02 · 298 阅读 · 0 评论 -
【C++编程基础】#008 递归生成括号
问题描述要求根据括号对数,生成所有情况的括号形式,比如3对括号会有以下形式:( ( ( ) ) )( ( )( ) )( ( ) )( )( )( ( ) )( )( )( )小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<iostream>#include<vector>#include<string>using namespace s原创 2020-05-15 21:39:25 · 440 阅读 · 0 评论 -
【C++基础编程】#007 所有出栈顺序
问题描述本题要求输入指定序列,随机出栈后输出所有的出栈顺序,比如,输入[a b c],则可能的出栈顺序有5种:[a b c][a c b][b a c][b c a][c b a]小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include <iostream>#include <cstring>using namespace std;int flag;void perm(char原创 2020-05-15 21:32:52 · 1774 阅读 · 0 评论 -
【C++基础编程】#006 STL标准模板库stack栈基本操作
问题描述栈作为一种基本的数据结构,在一些算法中十分实用,本文利用C++库stack实现队列操作,包括:push():向栈内压入一个元素pop():从栈顶弹出一个元素empty():如果栈为空返回true,否则返回falsetop():返回栈顶元素,但不删除size():返回栈内元素个数小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<iostream>#include<stack>原创 2020-05-15 14:13:41 · 296 阅读 · 0 评论 -
【C++基础编程】#005 STL标准模板库queue队列基本操作
问题描述队列作为一种基本的数据结构,在一些算法中十分实用,本文利用C++库queue实现队列操作,包括:push(x):将x压入队列的末端pop():弹出队列的第一个元素,注意次函数不返回任何值front():返回第一个元素(队顶元素)back():返回最后被压入的元素(队尾元素)empty():当队列为空时,返回truesize():返回队列的长度小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<原创 2020-05-15 14:05:15 · 226 阅读 · 0 评论 -
【C++基础编程】#004 利用vector数组实现快速排序
问题描述快速排序作为所有排序算法中运行速度比较快的排序算法,在程序员中广为流传,今天本文利用C++语言以及vector数组实现排序算法。小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<iostream>#include<fstream>#include<vector>#include<string>using namespace std;void quickS原创 2020-05-15 13:46:17 · 2011 阅读 · 0 评论 -
【C++编程基础】#003 排序算法:选择排序、插入排序、冒泡排序、归并排序。
问题描述排序是算法与数据结构中比较基础的一部分,本文利用C++语言,为大家介绍四种基础实用的排序算法:冒泡排序 bubbleSort选择排序 selectSort插入排序 insertSort归并排序 mergeSort小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<iostream>#include<vector>using namespace std;void原创 2020-05-15 13:27:52 · 196 阅读 · 0 评论 -
【C++编程基础】#002 从文件或键盘读出内容,并写入新文件。
问题描述使用任何一种语言,输入输出都是要学习的基础内容,在C++中,一般有两种输入输出的方式:从文件输入内容,并输出到新文件中。从键盘输入内容,并输出到新文件中。本文使用C++代码实现这两种交互方式。小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现#include<iostream>#include<fstream>using namespace std;int main(){ int cho原创 2020-05-15 12:44:59 · 632 阅读 · 0 评论 -
【C++编程基础】 #001 链表操作:创建、删除、得到链表长度、指定位置的值、反转、插入、输出等。
问题描述链表是C++中比较有特色的一种数据结构,同时思想较为简单,用处也比较多。然而,实现单链表却是很多C++初学者比较头疼的一件事,本文撰写了一些单链表的基本操作,主要包括:创建链表(正序)创建链表(逆序)输出链表内容删除指定位置的链表结点删除指定值的链表结点得到链表长度链表反转判断两个链表是否相等在指定位置插入链表的新结点小伙伴们需要自取,有帮助的话可以点个赞~注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。代码实现:用C++类(class)实现,共包含三个原创 2020-05-15 11:53:34 · 379 阅读 · 0 评论