
C++排雷
文章平均质量分 62
人工智睿
代码是单纯的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
爬楼梯会累问题的解法(C++)
爬楼梯进阶原创 2022-07-24 18:33:48 · 1273 阅读 · 1 评论 -
牛客C++笔试ACM模式输入输出练习
平时用力扣刷题,换成牛客这种需要打印输出结果对比判定的OJ不是很习惯,所以特别练习一下。尤其是对于8、9、10部分关于字符串的。”纸上得来终觉浅,绝知此事要躬行“原创 2022-06-19 01:09:31 · 4961 阅读 · 1 评论 -
C++检测平面内两个三角形是否相交(逻辑清晰,手撕精简版)
C++手撕平面内两个三角形是否相交,三角碰撞原创 2022-06-05 13:51:16 · 3052 阅读 · 2 评论 -
C++牛顿迭代法解非线性方程
把非线性方程无限分割为线性方程,利用线性方程斜率(导数)的三角关系迭代:例:用牛顿法求解方程f(x)=(x*e^x)-1=0在[0,1]内的一个实根,取初始点x0=0.5精度为e-5原创 2022-06-05 00:39:28 · 2904 阅读 · 0 评论 -
C++使用雅可比迭代法(jacobi)和高斯赛德尔迭代法(G-S)解线性方程组
简言之迭代法的相关推导迭代法的收敛性与谱半径雅可比迭代法:高斯赛德尔迭代法:原创 2022-06-04 23:43:14 · 6643 阅读 · 0 评论 -
C++排雷:29.构造函数的调用规则、构造与析构总结
构造函数的调用规则1)当类中没有定义任何一个构造函数时,c++编译器会提供默认无参构造函数和默认拷贝构造函数2)当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数3) 当类中定义了任意的非拷贝构造函数(即:当类中提供了有参构造函数或无参构造函数),c++编译器不会提供默认无参构造函数4 )默认拷贝构造函数成员变量简单赋值总结:只要你写了构造函数,那么你必须用。构造析构总结 :1)构造函数是C++中用于初始化对象状态的特殊函数2)构造函数在对象创建时自动被调用3)构造函数和普通成原创 2020-09-25 21:54:59 · 180 阅读 · 0 评论 -
C++排雷:28.构造函数_拷贝构造函数的四种调用时机
构造函数分为四种:1.无参#include <iostream>using namespace std;void objplaymain71();class Test{public: Test() { a = 0; b = 0; cout << "无参数构造函数 自动被调用" <<endl; } ~Test() { cout<<"我是析构函数 对象生命周期结束时,会被c++原创 2020-09-25 21:27:58 · 189 阅读 · 0 评论 -
C++排雷:27.error:LNK2005 已经在*.obj中定义 的原因分析及对策
https://www.cnblogs.com/MuyouSome/p/3332699.html原创 2020-09-10 23:11:09 · 15752 阅读 · 1 评论 -
C++排雷:26.inline内联函数和宏定义的区别
#include <iostream>using namespace std;//inline int myfunc(int a, int b)和函数体的实现,写在一块 //2 C++编译器直接将函数体插入在函数调用的地方 //3 内联函数省去了普通函数调用时压栈,跳转和返回的开销 //带参数的宏#define MYFUNC(a, b) ((a) < (b) ? (a) : (b)) inline int myfunc(int a, int b){ retur原创 2020-09-09 20:15:19 · 314 阅读 · 0 评论 -
C++排雷:25.引用的理解(type * const name)
#include <iostream>using namespace std;//1 引用的概念 //2 属于C++编译器对C的扩展,不能用c语言的语法去思考它void main91(){ int a = 10; //引用的语法:Type& name = var; int &b = a; b = 100; //相当于把a修改成100了. printf("b:%d \n", b); printf("a:%d \n", a); a = 200;.原创 2020-09-07 21:17:19 · 293 阅读 · 0 评论 -
C++排雷:24.C++中const的使用原理
不同于C中的const变量(只读变量,有自己的存储空间)可以声明新变量取其地址再取值修改C++中的const常量1.一般不分配存储空间,直接通过key和value输出(程序在编译时,就将变量用常量来替换了。)2.分配空间(此时,程序编译时,不知道该用什么值替换再编译;所以,将会用一块内存地址替换,然后再编译)的情况:当const常量为全局,并且需要在其他文件中使用时当使用&操作符取const常量的地址时...原创 2020-09-07 20:00:20 · 184 阅读 · 0 评论 -
C++排雷:23.指针和引用的主要区别
指针和引用的主要区别相同点:指针和引用均为符合类型,都与内存中实际存在的对象有联系它们都实现了对对象的间接访问不同点:区别主要有两方面:①指针本身就是一个对象允许赋值和拷贝在其生命周期内可以指向不同的对象而引用不是一个对象,无法重新绑定②指针可以不定义赋值(拥有一个不确定的值)引用必须"引用",需要在定义时赋值...原创 2020-08-03 09:31:32 · 137 阅读 · 0 评论 -
C++排雷:22.#define和typedef的区别
。原创 2020-07-06 09:22:50 · 216 阅读 · 0 评论 -
C++排雷:21.C++生成随机数(rand、srand、random库)
C++11之前,没有自带的random函数,要生成随机数,普遍采用rand和srand()。C++11之后,内部提供了强大的随机数库Random。rand()其内部实现是用线性同余法做的,生成是可看做一定范围内随机的伪随机数,其最大范围和系统相关。通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。或 a+(int)b * rand() / (RAND_MAX + 1)。要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。#in.原创 2020-07-03 17:25:59 · 1444 阅读 · 1 评论 -
C++排雷:20.写代码时,对各类容器的输出、索引的访问需要注意的
一定要考虑安全性,不能越界!所以读取、输出一定要嵌套在合理判断内部:比如,在下列将string加入vector的代码中,输出vector内部的内容时,的if判断:#include<iostream>#include<string>#include<vector>using namespace std;int main(){ string a; char back; vector<string> vec_str; cout <<原创 2020-07-02 17:01:25 · 151 阅读 · 0 评论 -
C++排雷:19.过滤英文和中文标点符号,string与wstring之间的转换
想要过滤一个文本中的标点符号。对英文标点符号可以使用cctype中的ispunct方法来识别而对于中文标点符号,则需要一定的转换。基础知识:字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,就需要进行原创 2020-07-02 14:27:53 · 2680 阅读 · 0 评论 -
C++排雷:18.进制转换:十进制转二进制、八进制、十六进制
码原创 2020-07-01 16:38:35 · 216 阅读 · 0 评论 -
C++排雷:17. 输入整行字符串的getline(空行输出、回车吸收)问题
需求:输入字符可选择整行输入和逐字输入两种模式问题代码:#include<iostream>#include<string>using namespace std;int main(){ int choice; cout << "整行输入请输入1,逐字输入请输入0\n"; cin >> choice; if (choice==1) { string content_str; cout << "现在是整行原创 2020-07-01 16:11:04 · 2191 阅读 · 0 评论 -
C++排雷:16. #pragma warning的几种用法
#pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。#pragma warning(push)是保存当前的编译器警告状态;#pragma warning(push, n) 存储当前报警设置,并设置报警级别为n。n为从1到4的自然数。#pragma warning(pop) 恢复之前压入堆栈的报警设置。该句之后的代码,就恢复了warning,即在一对push和pop之间作的任何报警相关设置都将失效。.原创 2020-07-01 11:25:41 · 3549 阅读 · 0 评论 -
C++排雷:15.auto和decltype的区别
auto和decltype都是类型推断的方式,但又有一定的区别:1.编译器的作用auto类型说明符 通过 编译器计算变量的初始值 来推断其类型而decltype是让编译器分析其表达式推断其类型,并不是计算表达式的值。2.编译器推断出来的auto类型与初始值类型可能有出入,编译器会适当地改变其结果使auto更符合初始化规则。auto会忽略顶层const而把底层留下来。而decltype会保留变量的顶层const。3.与auto不同,decltype的结果类型与表达式的形式密切相关原创 2020-06-30 16:02:29 · 438 阅读 · 0 评论 -
C++排雷:14.左值、右值、x值、g左和p右的含义
码,有机会补上原创 2020-06-30 13:59:53 · 362 阅读 · 0 评论 -
C++排雷:13.const的各类用法总结
1.常量:const对变量加以限定-----顶层constconst int bufsize = 512;这样就把bufsize定义成了一个常量。任何试图为bufsize赋值的行为都将引发错误:bufsize = 512; //错误:试图向const对象写值因为const对象一旦创建其值就不能再改变,所以const对象必须初始化。const对象初始化的方法:const int i = get_size();const int j = 42;int k=52;const原创 2020-06-29 14:44:40 · 262 阅读 · 0 评论 -
C++排雷:12.对const_cast真正意义的理解
吗原创 2020-06-29 13:47:07 · 349 阅读 · 0 评论 -
C++排雷:11.C++中&的含义
码原创 2020-06-29 13:55:31 · 217 阅读 · 0 评论 -
C++排雷:10.C++的四种强制类型转换
码原创 2020-06-29 10:39:00 · 294 阅读 · 0 评论 -
C++排雷:9.嵌套作用域中变量的定义和使用
在main结构体中,初始定义int a=100;在main结构体的while结构体中,利用a自加循环在main结构体的for结构体中,定义一个a=0,利用a条件循环在main结构体的for结构体中,使用a,利用a条件循环思考一下,经过不同的结构体,三次a的打印输出分别是什么?#include<iostream>using namespace std;int main(){ int a = 100; while (a<150) { a++; } cout <原创 2020-06-28 17:12:25 · 276 阅读 · 0 评论 -
C++排雷:8.浅谈声明和定义的区别
声明: 使名字为程序所知声明就是告诉编译器,现在世界上有这么一个编译器认识的东西,而没有具体说清楚到底是啥(没有实际分配内存空间)。比如,我声明我有一辆汽车,编译器知道车分为轿车、越野、面包、跑车,但是编译器不知道我到底有什么车。定义:创建与名字关联的主题给一个声明后尚未初始化的变量一个有意义的初始值(实体)。比如,我声明我有一辆车后,告诉编译器,我有辆跑车。赋值 :销毁一个变量原来的值(实体),并赋予一个新值(实体)。相当于改变了一个变量的状态。比如,我还是从前那个少年没有一丝丝改变….原创 2020-06-28 16:48:04 · 179 阅读 · 0 评论 -
C++排雷:7.默认初始化的不同情况
分析下述的初始化情况:std::string global_str;int global_int;int main(){int local_int;std::string local_str;}以上四个定义,分别是在全局下(函数体外)和结构体下的全局变量和局部变量。其中string类型,本身接受无参数的初始化方式,所以默认初始化为空字符串int类型,函数体外的global_int初始化为0;而local_int将不初始化,如果直接输出,会出现一个未定义的奇异值...原创 2020-06-28 16:21:20 · 254 阅读 · 0 评论 -
C++排雷:6.转义字符和ASCII
下述代码的运行结果是什么呢?#include<iostream>using namespace std;int main(){ cout << "who goes with F\145rgus?\012" << endl; return 0;}我们常用一些转义字符如,\n等,这些字符也可用用+其ASCII(十进制)码表示。个人认为这些东西没有必要死记硬背,用的时候查一下,看到了不知道其含义查一下就行了,常用的话自然而然就记住了。具体内容在下链接可查:原创 2020-06-28 15:56:38 · 199 阅读 · 0 评论 -
C++排雷:5.C++中的字面值指定类型
C++中只有内置类型存在字面值,没有类(class)类型字面值.例如:0是int类型的字面值,3.14159是double类型的字面值.字面值类型:整型浮点字面值20 // decimal 十进制024 // octal 八进制0X14 // hexadecimal 十六进制128u ,128U // unsigned1024UL原创 2020-06-28 15:16:30 · 418 阅读 · 0 评论 -
C++排雷:4. unsigned int与int之间的运算、unsigned的负数赋值
unsigned int与int类型的数据进行数值运算后,得到的结果是什么类型的呢?通过下例检验,为unsigned型:#include <stdio.h> int main(){ unsigned int a = 1; int b = -11; if (a + b > 0) printf("result is : unsigned int\n"); else printf("result is : int\n"); return 0;}如果运算符两边的运算数类型原创 2020-06-28 14:49:03 · 2467 阅读 · 0 评论 -
C++排雷:3.for循环配合cin输入流终止——控制台未知的快捷键Ctrl+Z
看到了这样的一段代码:#include<iostream>using namespace std;int main(){ cout << "请输入一些数,按ctrl+z结束\n"; int sum(0), value(0); for (; cin>>value; ) { sum += value; } cout << "读入的数和为" << sum << endl; return 0;}代码中的for控原创 2020-06-28 11:30:52 · 2046 阅读 · 0 评论 -
C++排雷:2.算法完整性的思考——以小题为例
题目:写一个程序,提示用户输入两个整数,然后自动打印出两整数所指定范围内的所有整数。初解看到这个题目,大脑一秒水出了答案。cin两个数,借助自加自减运算符,用for 或while 循环输出:#include<iostream>using namespace std;int main(){int a,b;cout<<"请输入两个整数\n";cin<<a<<b;while (a<=b){ cout<<a<<e原创 2020-06-28 10:33:35 · 219 阅读 · 0 评论 -
C++排雷:1.C++嵌套注释问题
用VS2019打印嵌套注释#include<iostream>using namespace std;int main(){ cout <</*"*/"/*"/*"*/ << endl; return 0;}本以为会分解为3部分,然后编译报错: /*"*/ " /*"/*"*/ 编译结果是: /*"*/ "/*" /*"*/初步分析,注释的匹配也是从右向左进行的,下面测试一下: cout<< /*/*/**/&原创 2020-06-28 09:53:25 · 414 阅读 · 0 评论