随笔分类 - C C++
摘要:在c++新标准之前通常使用c的函数rand来生成随机数。 现在可以使用下面这种方式: #include <random> #include <ctime> //生成0到9之前的随机整数 static std::default_random_engine e(time(0));//time(0)返回特
阅读全文
摘要:class Person{ public: static int Num; int Age; std::string Name; Person(int age,std::string name):Age(age),Name(name){ } }; 其中static int Num;为Person定义
阅读全文
摘要:1.派生来要调用基类的构造方法来为基类中的成员赋值 尽管在派生类中我们可以直接访问基类的公共成员(public)和受保护的成员(protected),但是我们不要直接给基类中的成员赋值,最好是调用基类的构造方法让他自己给自己的成员赋值,如: class Person{ public: int Age
阅读全文
摘要:我们知道C++中内置的一些类型之间是可以相互装换的: int a; double b=3.14; a=(double)b3; 我们希望自己写的类也可以进行类型转化 (1)将其他类型转换为我们写的类类型:只需要在构造函数中添加该类型的参数,然后将该参数的值赋给成员变量 class Person { p
阅读全文
摘要:我们把“()”叫做函数调用运算符,因为我们就是使用“()”来调用函数的。 在类中我们可以重载这个符号“()”,这样就可以像调用函数对象一样调用类的对象,这种重载了"()"的对象就是函数对象。 比如定义一个函数对象来求int的绝对值: struct absInt{ //重载"()"的方法只能定义为成员
阅读全文
摘要:系统中的++运算符放在变量的前面和后面是有区别的,如果我们自己的类想要实现++操作符的前置和后置功能如下。 比如有一个Person类,里面有一个int类型的age属性,当我们Person p;p++;就是对里面的属性age++,并且(p++)返回++之前的对象p。Person p;++p;对里面的属
阅读全文
摘要:class Person { private: public: std::string Name; Person(std::string name):Name(name)//这中写法叫成员列表初始化 { } }; 等价的写法: class Person { private: public: std:
阅读全文
摘要:1.拷贝构造函数 用类本身的一个已经创建的对象来构造一个新的类对象,新的对象的各个成员的值与传入的对象的成员值一致。 在创建一个类的时候如果没有显示的为类创造拷贝构造函数,系统会默认生成一个。 class Person{ public: string Name; } Person p; p.Name
阅读全文
摘要:1.在C++的程序中会有下面几块不同性质的内存来管理程序: 静态内存:用来保存局部的static对象,类的static数据成员,定义在函数外的全局变量。静态内存在程序启动时开辟在程序结束时释放。由编译器自动创建和销毁。 栈内存:用来保存函数内的非static对象(不包括用new开辟空间生成的对象)。
阅读全文
摘要:1.输入流迭代器istream_iterator (1)创建一个输入流迭代器的时候必须指定输入流迭代器读取的类型,该类型必须定义了输入运算符>>。 std::istream_iterator<int> int_it; (2)从文件中读取数据到输入流中 std::ifstream in("./test
阅读全文
摘要:1.C++中的迭代器一般是不会改变容器的大小的,只是用于读取或者修改容器中元素的值。而插入迭代器可以用于向容器中添加元素。 2. std::vector<int> vec; auto it = std::back_inserter(vec);//back_inserter用于创建一个vec容器的插入
阅读全文
摘要:在C++的学习过程中经常会提到适配器的概念,简单记录自己的理解: 1.适配器的意思就是将某些已经存在的东西进行限制或者组合变成一个新的东西,这个新的东西体现一些新的特性,但底层都是由一些已经存在的东西实现的。 2.我看到的C++中有容器适配器,迭代器适配器和函数适配器。 3.容器适配器就是stack
阅读全文
摘要:1.在头文件fstram中,定义了了三个类型:ifstream用来从一个给定文件中读取数据,ofstream向一个给定文件写入数据,fstream读写指定文件。 2.fstream是iostream的一个基类,所以我们也可以使用<<、>>、getline等来操作fstream 3.使用>>从文件中读
阅读全文
摘要:1.可以将一个类声明为一个字面值常量类,这样这个类就是一个字面值类型。但是声明这样的类要求比较多,用得也比较少,需要的时候自己网上查阅。 2.可以使用static关键字定义将类的成员变量和函数定义为静态的。静态成员与类直接相关而不是与每个类的对象相关联。 静态成员变量: (1)类的静态成员变量不在类
阅读全文
摘要:1.为函数的参数赋予默认值,如果给函数的某个参数设置了默认值,那么参数列表中该参数后面的所有参数都必须有默认值,调用函数的时候如果希望参数使用自己的默认值,只要不传入那个参数就可以了; void test5(int a,int b = 5,int c = 10,int d =15){ cout<<a
阅读全文
摘要:1.在iostream头文件中除了经常使用的std::cout std::endl外其他也比较常用的函数 (1)std::cin用于从控制台读入数据 int x; std::cin>>x; std::cout<<x<<std::endl; (2)std::cerr和std::clog std::ce
阅读全文
摘要:1.新的数据类型long long超长整型,当然还包括它的无符号类型unsigned long long 2.列表初始化,允许使用花括号来初始化变量 int a{10}; std::vector<int> vec{1,2,3}; 在用列表初始化的时候如果遇到精度丢失的情况会报错: int a{1.5
阅读全文
摘要:1.set_intersection的用法 set_intersection用于求两个容器的交集,并将交集放到一个目标容器中,返回值是交集在目标容器中的最后一个元素的迭代器,#include <algorithm> #include <iostream> #include <vector> #inc
阅读全文
摘要:1.accumulate的用法 accumulate用于计算容器中所有元素的和,#include <numeric> #include <iostream> #include <vector> #include <numeric> int main(){ std::vector<int> vec0;
阅读全文
摘要:1.copy的用法 copy用于将容器内指定范围的元素拷贝到另一容器 #include <algorithm> #include <iostream> #include <vector> #include <algorithm> int main(){ std::vector<int> vec0;
阅读全文

浙公网安备 33010602011771号