C++基础
无情的搬砖机器
不求甚解
展开
-
sizeof,strlen,strcpy,memcpy
参考连接1:http://c.biancheng.net/view/342.html参考连接2:https://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html一、sizeof()单目运算符,不是函数,它的参数可以是数组、指针、类型、对象、函数等,返回参数的字节大小计算数组长度:sizeof(数组名)/sizeof(...转载 2020-05-07 14:58:48 · 346 阅读 · 0 评论 -
vector erase操作
1、删除一个元素可以看到删除后返回的是wh原创 2020-04-22 16:22:47 · 529 阅读 · 0 评论 -
stringstream实现string和double/int类型的相互转换
参考连接:https://blog.csdn.net/nwpu_yike/article/details/22100615#include <iostream>#include <string>#include <sstream>using namespace std;int main(){ double rb; int ri; ...转载 2020-04-21 15:36:38 · 1807 阅读 · 0 评论 -
数组下标求余实现轮询
1、数组前后两两一组组成点,最后一个和第一个一组vector<int> vec(4)...for(int i = 0;i<vec.size();++i){ Point res = Point(vec[i],vec[(i+1)%4]); ...}i遍历到最后利用求余回归到第一个位置。或者利用下标对数组大小进行求余运算就可以回到数组起始位置,实现...原创 2020-04-18 10:37:38 · 907 阅读 · 0 评论 -
c++11智能指针解析——揭开底层面纱,完整理解智能指针
看了很多关于智能指针的资料,我jio得这篇帮助最大链接转载 2020-04-17 16:10:21 · 406 阅读 · 1 评论 -
C++统计时间
#include<iostream>#include<ctime>using namespace std;int main() { for (int i = 0; i <= 9; ++i) { int n = pow(10, i); clock_t startTime = clock(); int sum = 0; for (int i =...原创 2020-04-08 17:04:00 · 3058 阅读 · 1 评论 -
多继承虚函数表问题
#include <iostream>using namespace std;class A {public: virtual void f() { cout << "F->A" << endl; }};class B {public: virtual void f() { cout << "F->B" &...原创 2019-10-18 18:52:57 · 331 阅读 · 0 评论 -
C++的输入方法
参考连接:https://www.cnblogs.com/wft1990/p/5861529.html一、cin,可以接受数字和字符串的输入,遇空格,Tab和回车结束二、cin.get()用法1:用来接受一个字符,cin.get(字符变量) 与 字符变量 = cin.get() 结果一样例子如下:#include<iostream>#include<stri...转载 2019-03-23 20:56:07 · 1323 阅读 · 0 评论 -
二维数组操作
#include<iostream>using namespace std;int main() { int line1[] = { 1,0,0 }; int line2[] = { 0,1,0 }; int line3[] = { 0,0,1 }; int* p[3] = { line1,line2,line3 }; for (int i = 0; i < 3...转载 2019-04-13 23:59:39 · 206 阅读 · 0 评论 -
返回数组最大值和最小值
1、使用algorithm中的min_element/max_element#include<iostream>#include<algorithm>using namespace std;int main() { int n; while (cin >> n) { int* p = new int[n]; for (int i = ...转载 2019-03-13 11:55:01 · 1990 阅读 · 0 评论 -
使用map统计字符出现次数
一、map中的find函数:用于查找map中是否包含某个关键字条目,传入的参数是要查找的key,最后返回一个迭代器,如果没有找到,则返回的迭代器等于end()返回的迭代器。#include<iostream>#include<string>#include<map>using namespace std;int main() { map&l...转载 2019-03-25 09:14:03 · 4668 阅读 · 0 评论 -
练习题1
现在你需要用一台奇怪的打字机书写一封书信。信的每行只能容纳宽度为100的字符,也就是说如果写下某个字符会导致行宽超过100,那么就要另起一行书写信的内容由a-z的26个小写字母构成,而每个字母的宽度均会事先约定。例如字符宽度约定为[1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],那么就代表'a'到'd'四个字母的宽度分别是1,2,3,4...转载 2019-03-09 17:36:17 · 139 阅读 · 0 评论 -
explicit关键字
关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 一 是个构造器 二是个默认且隐含的类型转换操作符。怎么理解?比如定义类A该函数的构造函数只有一个int型参数(或者除了第一个参数外其余参数都...转载 2019-03-01 23:45:14 · 192 阅读 · 0 评论 -
C++读取txt文件
#include<iostream>using namespace std;int main(int argc, char** argv) { fstream file; file.open("1.txt"); // 1 2 3 // 4 5 6 int arr[2][3] = { 0 }; int* ptr = &arr[0][0]; while (!f...转载 2019-04-25 18:35:03 · 5332 阅读 · 0 评论 -
字符和整形的相互转换
string装换为c类型的数组,string str = “123”; 如何转换为int型?atoi(str.c_str())1、首先 c_str() 是一个函数,语法 const char* c_str();2、c_str()函数返回一个指向正规c字符串的指针常量,内容与string串相同;3、c语言中没有string类型,这个函数是为了兼容c语言而设计的,所以必须通过string类...转载 2019-07-02 17:36:16 · 1742 阅读 · 0 评论 -
python中的split函数用C++怎么实现?
参考链接:https://www.jianshu.com/p/5876a9f49413https://cloud.tencent.com/developer/article/1386201https://www.cnblogs.com/stonebloom-yu/p/6542756.html用过python的小伙伴应该很清楚python中的split函数是多么好用,那么在C++中该...转载 2019-07-02 18:59:28 · 942 阅读 · 0 评论 -
结构体和结构体指针作为参数传递
参考链接:https://blog.csdn.net/jin13277480598/article/details/48226349结构体和结构体指针作为参数传递其实也是比较好理解的,因为之前我们应该学习过地址传参数的问题,其实是一样的,主要优点是地址比传递整个结构体快,具体可参考链接结构体作为参数传递:#include<iostream>#include<cst...转载 2018-08-14 13:53:01 · 13981 阅读 · 0 评论 -
再看异或
异或的性质A)交换律 a^b = b^a;B)结合律 (a^b)^c = a^(b^c);C)x^x = 0,x^0 = x;D)自反性:A xor B xor B = A xor 0 = A;一、一个数组存放若干个整数,一个数出现了奇数次,其余的数出现偶数次,找出出现奇数次的这个数。比如 1 2 3 2 3 1 5 4 4 ,找出5int process(vect...原创 2019-09-12 12:19:43 · 332 阅读 · 0 评论 -
递归中的引用传递和常引用传递
通过递归加深引用传递和常引用传递的区别,同时加深递归回溯的过程void process(string& str) { if (str.size() >= 5) { cout << str << ",return" << endl; return; } cout << str<<endl; str += ...原创 2019-08-22 12:46:54 · 2251 阅读 · 0 评论 -
++i与i++的区别
先来看一下 i++ 和 ++i具体是怎么实现的吧int& int::operator++() { *this += 1; return *this;}const int int::operator(int) { int old_value = *this; ++(*this); return old_value;}++i 返回的是 i 的引用,i++ 返回的是 o...转载 2019-08-17 12:26:34 · 226 阅读 · 0 评论 -
static关键字的作用
static的作用分别考虑对面向过程编程和面向对象编程一:面向过程编程1、隐藏功能C++在编译多个文件时,对未加static前缀的全局变量都是全局可见的,而对于添加了static关键字的全局变量和函数只能对当前文件起作用,对其他外部文件时隐藏的,这样的好处就是可以在不同的文件中使用相同的变量和函数名而不发生冲突。//a.cpp#include<iostream>u...转载 2019-08-16 19:41:40 · 205 阅读 · 0 评论 -
左值和右值引用
右值引用引入的背景临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。1、左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体; 右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。 一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。2...转载 2019-08-09 00:31:15 · 171 阅读 · 0 评论 -
auto遍历、sort自定义排序
转载自:https://blog.csdn.net/qq_40213457/article/details/807201701、auto遍历方式#include<iostream>#include<map>#include<vector>#include<unordered_map>#include<string>us...转载 2019-07-17 21:00:22 · 990 阅读 · 0 评论 -
优先队列priority_queue
转载自:https://www.cnblogs.com/Deribs4/p/5657746.htmlpriority_queue本质是一个堆。1.头文件是#include<queue>2. 关于priority_queue中元素的比较a)模板申明带3个参数:priority_queue<Type, Container, Functional>,其中Type...转载 2019-07-24 13:15:57 · 330 阅读 · 0 评论 -
C++函数指针,回调函数??
前两天被问到p是指向函数的指针,p(a,b) 是什么鬼?查了一下原来p(a,b)是(*p)(a,b)的简写方式,后者直观多了!以下代码输出结果都是一样的.#include <iostream>using namespace std;int add(int,int);int main(int argc,char* argv[]){ int a = 1;...转载 2019-02-26 11:39:59 · 177 阅读 · 0 评论 -
C++多线程简记
一、detach()和join()方式1、detach翻译为分离,意思是线程同时分别运行。2、join可以翻译为连接,意思是等待前面线程执行完毕后面线程才能开始执行3、thread()中的参数是函数的指针,也就是函数地址1、detach,可以看到,主程序执行完毕之后还会等待线程1和线程2执行完才会退出程序。#include<thread>#include&l...转载 2018-12-16 22:02:16 · 535 阅读 · 0 评论 -
vs高级版本打开低级版本方法
使用vs的高级版本打开低级版本的方法一般会存在一个window SDK不匹配的错误,解决方法如下https://blog.csdn.net/chunleixiahe/article/details/78410506转载 2018-08-18 17:14:51 · 6305 阅读 · 0 评论 -
引用操作
引用,相当于给变量再起一个别名,和另一数据共享存储空间,例#include <iostream>using namespace std;int main(){ int a; int & ref=a; a=5; cout<<"a: "<<a<<" ;ref: "<<ref转载 2018-08-13 11:25:14 · 322 阅读 · 0 评论 -
函数指针_1
函数指针的定义格式函数返回值类型 (*p) (函数参数)比如 char * (* as_string)(ADT object)描述:as_string是一个函数指针,指向的函数有一个类型为ADT的参数,该函数返回值类型时char *型使用函数指针调用函数格式:as_string=function;(*as_string)(参数);注意这里不能写为as_tring=functio...转载 2018-08-15 16:19:50 · 255 阅读 · 0 评论 -
素数的判断
#include<iostream>//sqrt#include<cmath>//exit#include<cstdlib>//printf#include<cstdio>using namespace std;//首先定义一个变量为1,用exit(1)来退出操作系统const int failed_in_testing_prim...转载 2018-08-07 11:05:14 · 546 阅读 · 0 评论 -
简单实现插入排序法
#include<iostream> /*插入排序就是将当前的数与前一个进行比较,如果比前一个大,就插入其后 */ using namespace std;void InsertionSort(int A[], int n){ //从第一个数开始比较 for (int i = 1; i < n; i++) { //使用变量get保存当前的数,方便交换 ...转载 2018-08-02 17:25:06 · 731 阅读 · 0 评论 -
汉诺塔游戏
https://www.cnblogs.com/tgycoder/p/6063722.htmlhttps://www.cnblogs.com/tgycoder/p/6063722.html#include<iostream>using namespace std;void move(char x,char y);void hanoi(int n,char on...转载 2018-08-07 10:16:33 · 328 阅读 · 0 评论 -
指针与结构体
这段代码利用指针实现对结构体变量内容进行互换主要涉及到结构体的声明,结构体变量的定义,指针等#include <iostream>//strcpy()#include <string.h>using namespace std;//声明结构体struct Student{ char name[20]; int age; int ...转载 2018-08-10 18:32:42 · 235 阅读 · 0 评论 -
随机生成10个数组然后颠倒输出
One:数组作为函数参数/*随机生成10个整数,然后颠倒输出*/#include <iostream>//setw()#include <iomanip>#include "zyrandom.h"// #define NDEBUG#define NUM 10#define LOWER 10#define UPPER 99using namespa...转载 2018-08-10 15:12:44 · 1225 阅读 · 0 评论 -
数组/指针与函数
数组与函数:这段函数中 函数的参数是数组,注意数组作为函数参数时,数组名和数组元素个数时分别传递的。#include <iostream>#include "zyrandom.h"using namespace std;#define NUM 10#define LOWER 10#define UPPER 99void GetIntegers(int a[]...转载 2018-08-10 13:51:53 · 238 阅读 · 0 评论 -
指针与数组
这段代码的函数参数是指针变量,通过向函数传递变量的地址实现了对变量内容进行操作。#include<iostream>//exit()#include<cstdlib>using namespace std;void Swap(int *x,int *y);// #define NDEBUGint main(void){ int m=10, n=2...转载 2018-08-10 10:42:53 · 120 阅读 · 0 评论 -
求二维数组每行元素之和
#include<iostream>using namespace std;int main(void){ int a[3][3]={1,2,3,4,5,6,7,8,9}; int s,*p=a[0]; //利用两个指针的差来判断两个地址的长度 while(p-a[0]<9) { s=0; for(i...转载 2018-08-04 14:51:52 · 9082 阅读 · 0 评论 -
十进制转换为二进制
十进制转换二进制#include<iostream>using namespace std;int main(){ int a[10000],n,i=0,j; cin>>n; while(n>0) { //取2的余数 a[i]=n%2; //取了余数之后在进行自增了,所以后面输出应该i-1 i++; //取被2整除的数,作为...转载 2018-07-25 23:56:57 · 359 阅读 · 0 评论 -
函数指针_2
一、使用typedef声明指向函数的指针typedef void(*pFunc)(void)pFunc pfunc则使用pFunc就可以声明一个指向void(*)(void)函数的指针了二、举一个简单的例子理解函数指针#include <iostream>#include <cstdlib>using namespace std;typed...转载 2018-08-16 11:49:42 · 218 阅读 · 0 评论 -
重载数组下标运算符
#include <iostream>using namespace std;class Couple{ public: //构造函数直接传进参数赋给私有成员数组成员 Couple(int a=0,int b=0){_a[0]=a,_a[1]=b;} //定义两个操作符函数,传递下表索引 //第一个是非常量的版本 //返回的是int & 也就...转载 2018-08-26 17:55:56 · 2006 阅读 · 0 评论