c/c++
c/c++学习总结
华zyh
这个作者很懒,什么都没留下…
展开
-
C++列表初始化
假定有一个名为NoDefault的类,它有一个接受int的构造函数,但是没有默认构造函数。定义类C,C有一个NoDefault类型的成员,定义C的默认构造函数。【出题思路】因为NoDefault仅有的一个构造函数并不是默认构造函数,所以在类C中,不能使用无参数的默认构造函数,那样的话,类C的NoDefault成员无法正确初始化。【解答】我们需要为类C的构造函数提供一个默认的int值作为参数,满足题意的类定义及验证程序如下所示:对于非内置类型(无默认构造函数),不能直接直接初始化或者拷贝初始化(赋原创 2022-01-22 15:55:00 · 198 阅读 · 0 评论 -
C++类的对象成员不可以显式初始化[Error] expected identifier before string constant
#include<string>#include<iostream>using namespace std;class B{ public: B(int a){} B(){}};class A{ public: int i = 2020; const int ci = 2020; //基本数据类型可以 static int si; //初始化只能在类外 //static int si = 2021; //[Error] ISO C+原创 2020-07-03 21:05:45 · 6826 阅读 · 0 评论 -
C++字符串的输入和用getline输入遇到的问题
C++中的字符串读入我们通常是用 cin>>str; 它只要碰到空格或者换行符就意味着本字符串读取结束,且不会读取空格和换行符(相当于丢掉)。而getline函数读取一行,可以读入空格,遇到换行符结束(从输入流中丢掉该换行符)。但是,注意一点就是:如果只读入了一个换行符(敲了回车),这个换行符虽然不会被读入,但是它会被当作结束符,这个时候什么也没有读入。举例:#include<string>#include<iostream>using namespace st原创 2020-07-01 18:38:59 · 1191 阅读 · 0 评论 -
浅析C++强制类型转换运算符的重载,解释while输入流能够判断文件结束的原因
我们在C++中,读取文件时经常这样写假设文件中全是一系列整数int i;while(cin>>i){ ......}这个时候爱动脑筋的你不免有这样的疑惑,在标准C++中重载的>>右移运算符不是应该返回输入流的引用嘛,像下面这样:#include<iostream>using namespace std;class A{ public: int v1,v2; A(int x, int y):v1(x),v2(y){} operator原创 2020-06-16 22:23:47 · 193 阅读 · 0 评论 -
kruskal算法基于并查集的实现
#include<iostream>#include<algorithm>#include<set>#include<vector>using namespace std;/*并查集*/ struct UF{ UF * parent; UF():parent(NULL){ }};UF* find(UF* c){ if(c->parent == NULL) return c; set<UF*> s; w原创 2020-06-14 13:52:06 · 328 阅读 · 0 评论 -
基于类的并查集
/*===并查集===*/class Node {public: Node *parent; Node() : parent(NULL) {}};Node *find(Node *x) { Node *p = x; if (p->parent == NULL)return p; set<Node *> path; while (p->parent != NULL) { path.insert(p);转载 2020-06-13 21:17:06 · 106 阅读 · 0 评论 -
C++构造函数析构函数拷贝赋值构造函数拷贝赋值运算符样例分析
练习13.13:理解拷贝控制成员和构造函数的一个好方法是定义一个简单的类,为该类定义这些成员,每个成员都打印出自己的名字:struct X{X() { std::cout << “X()” << std::endl; }X( const X& ) { std::cout << “X( const X&)” << std::end...原创 2020-05-04 21:27:41 · 286 阅读 · 0 评论 -
C++的map(映射对象为自定义数据类型)在使用[ ]时遇到的问题
struct node{ int x,y; node(int a, int b): x(a),y(b){ } node(): x(0),y(0){ }};map<int,node> s;映射对象为一个类,这时如果不写默认构造函数,那么在使用下标运算符时会编译报错,原因是map在不存在这样的键时,要自动创建此对象,如果没有默认构造函数,那么它不知道如何创建。**注意...原创 2020-04-25 11:23:56 · 648 阅读 · 0 评论 -
C++的const类型的引用问题
int ac = 10; int &ay = ac; const int &acy = ac; const int acc = 10; const int &acy1 = acy;//正确 int &acy2 = acc;//编译错误,被引用的类型是const,那么引用类型也必须是const上面的例子也解释了,在set或者map模板参数是自定义类...原创 2020-04-22 13:47:47 · 173 阅读 · 0 评论 -
c++集合等容器上的交,并,差运算
#include<iostream>#include<algorithm>#include<iterator> #include<set>#include<vector>using namespace std;int main(){ set<int> s1; for(int i=1; i<=5; ++...原创 2020-04-15 23:31:11 · 522 阅读 · 0 评论 -
C++的可调用对象分析(以sort的自定义比较操作举例来介绍)
C++的可调用对象:1. 函数名2. 函数指针3. 重载了括号"()"的对象4. lambda表达式接下来,以sort为例分别介绍这四种方法1.函数名bool cmp( const int& a,const int &b){ return a<b;}int main(){ int a[] = {1,2,7,3,4,-2,-3,5}; sort(a,a...原创 2020-04-02 23:58:53 · 184 阅读 · 0 评论 -
蓝桥杯剪邮票全排列加DFS
剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。第一次看到这个题,以为是纯...原创 2020-03-22 19:46:17 · 340 阅读 · 0 评论 -
蓝桥杯方格填数 二维数组上的nextpermutation()问题
#include<iostream>#include<algorithm>#include<cmath>using namespace std;int a[3][4]={-2,0,1,2,3,4,5,6,7,8,9,-2};bool is(){ for(int i = 0;i<3;++i) for(int j =0;j<4;++j...原创 2020-03-22 13:03:46 · 356 阅读 · 0 评论 -
C++全排列next_permutation和is_permutation的使用
//#include <algorithm> #include<bits/stdc++.h>using namespace std;int main(){ int a[] = {9,5,7,8}; int b[] = {7,5,8,9}; ios::sync_with_stdio(0); do{ for(int i = 0; i<4; ++i) ...原创 2020-03-19 10:35:11 · 279 阅读 · 1 评论 -
c++中的set自定义数据类型
#include<iostream> #include<stack>#include<string>#include<cmath>#include<map>#include<algorithm> #include<sstream>#include<set>#include<que...原创 2020-03-11 20:32:54 · 3113 阅读 · 2 评论 -
c++嵌套vector与typedef
最近在用c++的vector容器时,遇到了许多问题,在此总结一下typedef vector<int > vec;typedef vector<vec> matrix;最好这样这样定义,不要直接 typedef vector <vectro <int>> matrix;两种使用方法:1. matrix result(x,vec(z))...原创 2020-03-07 00:08:30 · 1810 阅读 · 0 评论 -
二维数组返回问题
#include<iostream>typedef unsigned long long int lint;typedef lint(*T)[2];//二维数组名,作为返回值,//必须typedef重定义,否则编译出错using namespace std;typedef struct node0{ lint a[2][2];}node0;node0 f()...原创 2020-03-06 12:02:06 · 534 阅读 · 0 评论