C++
C++基础
千与千与千
不学无术、一无是处
展开
-
不使用sizeof()计算int类型所占的字节长度
思路:1、使用位移运算2、位移,即在二进制的基础上对数字进行平移。左移一次,低位补零,高位舍弃。 比如二进制数 00000001(也就是十进制的1),左移一次变成了00000010(也就是十进制的2)3、设初始值为1,则循环将值左移,直到值为0,记录循环的次数,即总共的位数,再除以8(一个字节=8位),即该类型的字节长度。代码:#include <iostream>using namespace std;int main(){ int i=1,c=0;原创 2020-09-24 16:41:36 · 827 阅读 · 0 评论 -
C++ 生成不包含重复值的1百万的随机数
1、使用rand()函数简介:1、rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。2、表获取a~b 之间的一个随机整数:rand() % (b-a+1)+ a3、rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。为了避免出现重复的数字,在调用此函数产生随机数前,必须先利用 srand()设置好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为 1。代码:#include <i..原创 2020-09-14 18:47:06 · 1430 阅读 · 0 评论 -
Primer C++ 学习笔记:函数的默认实参
1、某些函数有这样一种形参,在函数的很多次调用中它们都被赋予了一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。r如果想使用默认实参,只要在调用函数的时候省略该实参就可以了。定义void example(int i=20, int j=3, char ch='*');调用example(); 等价于example(20,3,'*')example(30); 等价于example(3原创 2020-08-31 11:42:20 · 349 阅读 · 0 评论 -
正整数分解质因数:将一个正整数分解成质数相乘的格式
问题描述:将一个正整数分解成质数相乘的格式,例如50:2*5*5代码:#include <iostream>#include <cmath>using namespace std;int main(){ int n; cin>>n; for(int i=2;i<=sqrt(n);i++) { while(n%i==0) { cout<<i;原创 2020-08-30 11:29:31 · 2898 阅读 · 4 评论 -
Primer C++ 学习笔记:vector容器的容量改变(size,capacity,resize,reserve,shrink_to_fit)
一、空间分配策略当不得不获取新的内存空间时,vector和string的实现通常会分配比新的空间需求更大的内存空间。容器预留这些空间作为备用,可以用来保存更多的新元素。这样,就不需要每次添加新元素都重新分配容器的内存空间了二、管理容量的成员函数1、size容器实际存储的元素个数代码:#include <iostream>#include <vector>using namespace std;int main(){ vector<in原创 2020-08-21 09:58:48 · 7309 阅读 · 2 评论 -
C++ find():泛型算法和成员函数
一、泛型算法:泛型算法是STL库里面定义的一些算法,这些算法可以用一个接口操作各种数据类型,因此成为泛型算法。大多算法定义在头文件algorithm和numeric中。find的前两个参数是表示元素范围的迭代器,第三个数是一个值,find将范围中的每个元素与给定的值进行比较,如果有匹配元素,则返回第一个等于给定值的元素的迭代器,如果无匹配值,则返回find中第二个用来表示范围的迭代器参数来表示搜索失败。代码:#include <iostream>#include <ve原创 2020-08-17 17:42:20 · 634 阅读 · 0 评论 -
C++ 使用while循环进行输入字符串,终止输入的方式(Ctrl+Z,Ctrl+C)
1、Ctrl+Z只有当Ctrl+Z单独位于一行的行首时,表示输入的终止当Ctrl+Z位于行中、行末时,输入都不会结束。代码:#include <iostream>#include <string>using namespace std;int main(){ string s; while(cin>>s) cout<<s<<endl; return 0;}输出:2、C原创 2020-08-17 11:46:05 · 8923 阅读 · 0 评论 -
C++ 从键盘读取字符串和字符的几种方式
1、cincin读取时,遇到空格、制表符、回车会立即终止输入代码:#include <iostream>#include <string>using namespace std;int main(){ string s; cin >> s; cout << s << endl; return 0;}输出:使用cin进行输入时,想要输入多个字符串,可以使用while代码:.原创 2020-08-17 10:48:48 · 10283 阅读 · 0 评论 -
C++ 字符串转换为数字(三:stoi,stoll,stof,stod)
一、stoi()将字符串转换为整型#include<iostream>#include<string>using namespace std;int main(){ int n; string s1="89"; n=stoi(s1); cout<<n<<endl; return 0;} 二、stoll()将字符串转换为long long#include<iostream>原创 2020-08-16 22:35:51 · 5684 阅读 · 0 评论 -
C++ 数字转换为字符串(二:使用to_string)
一、利用stringstreamhttps://blog.csdn.net/liu_feng_zi_/article/details/108028930二、利用to_string头文件<string>需要支持C++11#include<iostream> #include<string> using namespace std;int main(){ int n=89798; string s1; s1=to_st原创 2020-08-16 19:30:08 · 601 阅读 · 0 评论 -
C++ 字符串和数字的相互转换( 一:使用stringstream)
1、头文件<sstream>sstream头文件定义了三个类型来支持内存IO,这些类型可以向string写入数据,从string读取数据。istringstream从string读取数据,ostringstream向string写入数据,stringstream既可以从string读取数据也可以向string写数据2、分割字符串:stringstream可以按照空格、制表符等分割字符串,如下面代码:#include<iostream> #include<原创 2020-08-15 22:47:05 · 1030 阅读 · 0 评论 -
C++ 使用位运算判断整数的奇偶性
判断整数奇偶性的方式大多数为除以2查看余数是否为1.另外有一种方法,可以通过位与运算判断整数的奇偶性如下面代码:#include <iostream>using namespace std;int main(){ int a = 5; if ((a & 1) == 1) cout << "jishu" << endl; else cout << "oushu" <<原创 2020-08-13 10:52:49 · 5204 阅读 · 0 评论 -
C++浮点数判断相等的方法
先看下面一段代码:#include <iostream>using namespace std;int main(){ double a = 0.111; double b = 0.444; double c = b - a * 3; if (c == a) cout << "==" << endl; else cout << "!=" << endl;原创 2020-08-12 14:11:58 · 3477 阅读 · 1 评论 -
Primer C++ 学习笔记:顺序容器vector
顺序容器类型:容器均定义为模板类,顺序容器几乎可以保存任意类型的元素,我们可以定义一个容器,其元素的类型是另一个容器vector:可变大小数组。支持快速随机访问。在尾部之外的位置插入成删除元素可能很慢 deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很快 list:双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快 forward_list:单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快 array:固定大小数组。支持快速原创 2020-08-01 15:05:28 · 218 阅读 · 0 评论 -
Primer C++ 学习笔记:输出流的缓冲区
1、每个输出流都管理一个缓冲区,用来保存程序读写的数据2、进行输出时,文本串可能被立即打印出来,也有可能被操作系统保存在缓冲区中,随后打印3、有了缓冲机制,操作系统就可以将程序的多个输出操作组合成单一的系统级写操作。由于设备的写操作可能很耗时,允许系统将多个输出操作组合为单一的设备写操作可以带来很大的性能提升。4、缓冲刷新,即将数据真正写到输出设备或文件5、缓冲刷新的原因可能有:程序正常结束,作为main函数的return操作一部分,执行缓冲刷新 缓冲区满时,需要刷新缓冲,然后新的数据原创 2020-07-30 10:40:36 · 229 阅读 · 0 评论 -
Primer C++ 学习笔记:变量的声明和定义
C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可以被独立编译。如果将程序分为多个文件,则需要有在文件间共享代码的方法。例如,一个文件的代码可能需要使用另一个文件中定义的变量。为了支持分离式编译,C++语言将声明和定义区别开来。声明:一个文件如果要使用在其他文件定义的变量,则必须要包含对那个变量的声明,告诉后面的程序,我要用这个变量。声明一个变量的方法,是在变量名字前添加关键字extern,并且不要显式的初始化变量。一旦声明中显式的初始化了变量,就成为了定义。extern原创 2020-07-23 15:38:53 · 125 阅读 · 0 评论 -
二叉树创建(前序序列创建)、前序遍历、中序遍历、后序遍历
上面二叉树的前序遍历序列为(以0代替NULL):[1,2,4,8,0,0,9,0,0,5,10,0,0,11,0,0,3,6,12,0,0,0,7,0,0]根据上面的前序遍历,创建二叉树,并对二叉树进行前序遍历、中序遍历、后续遍历#include <iostream>#include <vector>using namespace std;int index_num=0;vector<int> num={1,2,4,8,0,0,9,0,0,5,10..原创 2020-07-01 16:13:04 · 672 阅读 · 0 评论 -
树和二叉树基本概念和性质
树1、结点:树中的一个独立单元。包含一个数据元素及若于指向其子树的分支,如上图树中的所有圆圈。2、结点的度:结点拥有的子树数称为结点的度。上图树中,A的度为4,B的度为2,G的度为1,K的度为0。3、树的度: 树的度是树内各结点度的最大值。上图树中,树的度为4。4、叶子:度为0 的结点称为叶子或终端结点。如上图树中的F、G、H等。5、非终端结点:度不为0 的结点称为非终端结点或分支结点。除根结点之外,非终端结点也称为内部结点。6、双亲和孩子:结点的子树的根称为该结点的孩子,相应地..原创 2020-06-30 13:12:12 · 273 阅读 · 0 评论 -
c++读取txt,并将其中的实数显示并统计其总个数和平均值,考虑空行(文件读取,字符串转换数字,字符转换字符串)
#include <iostream>#include <sstream>#include <cassert>#include <cstring>#include <fstream>using namespace std;int main(){ ifstream read; string file="E:\\test.txt";//文件路径 read.open(file.data()); asser.原创 2020-06-18 09:56:14 · 1092 阅读 · 3 评论 -
C++ VS2017 LNK 1169:找到一个或多个多重定义的符号
错误提示:1>LINK : 没有找到 E:\Project_File\VS\General_Mesh\Debug\general_mesh.exe 或上一个增量链接没有生成它;正在执行完全链接1>general_mesh.obj : error LNK2005: "int field_max_X" (?field_max_X@@3HA) 已经在 FrontInfo.obj 中定...原创 2020-01-04 11:04:18 · 2094 阅读 · 0 评论 -
C++ 三维数组开辟方式——静态开辟,C方式(malloc)动态开辟,C++方式(new)动态开辟——时间效率
代码如下:#include <iostream>#include <stdio.h>#include <time.h>using namespace std;double arr[6000][100][10];int main(){ clock_t a, b; double all; for (int j = 0; j < 6000...原创 2019-12-10 10:59:02 · 265 阅读 · 0 评论 -
C++ 大数组定义在main函数中不能执行,将其定义为全局变量可以执行——BSS段、数据段、代码段、堆与栈及五大内存分区——堆栈的空间大小
一、简而言之,数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般很小,所以太大的数组会耗光栈空间。全局变量一般分配在数据段,可以比较大。二、BSS段、数据段、代码段、堆与栈及五大内存分区BSS段(Block Started by Symbol):BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS段属于...原创 2019-12-10 10:49:55 · 1110 阅读 · 0 评论 -
C++ string类字符串的基本用法详解:初始化、拼接、插入、查找、删除、其他常用方法
一、初始化: string str; //定义一个空的字符串 char cstr[] = "I have a dream"; //定义一个字符数组 str = "I have a dream"; //字符串赋值方法1 string s1 = str; string s2 = "I have a d...原创 2019-10-19 22:20:01 · 2479 阅读 · 0 评论