随笔分类 -  C++

摘要:function是一种类模板,重载了operator()函数调用操作符,所以每一个function类的对象都是一个函数对象。 我们可以这样使用function模板: #include <iostream> #include <string> #include <vector> #include <f 阅读全文
posted @ 2020-06-08 17:45 江雨牧 阅读(394) 评论(0) 推荐(0)
摘要:1. string to char*方式1 通过const_cast<char*>() std::string str = "string"; char* chr = const_cast<char*>(str.c_str()) 方式2 string str = "some string" ; ch 阅读全文
posted @ 2020-06-07 14:34 江雨牧 阅读(5818) 评论(0) 推荐(1)
摘要:标准库里的priority_queue默认创建的是最大堆,要创建最小堆的话,需要下面的形式。 1 priority_queue<int,vector<int>,greater<int>> minheap;//最小堆 2 priority_queue<int,vector<int>,less<int> 阅读全文
posted @ 2020-05-29 11:03 江雨牧 阅读(1551) 评论(0) 推荐(0)
摘要:string->int 使用stringstream:(stringstream 可以用于各种数据类型之间的转换) 1 #include <iostream> 2 #include <sstream> 3 using namespace std; 4 int main() 5 { 6 int num 阅读全文
posted @ 2020-04-26 18:08 江雨牧 阅读(378) 评论(0) 推荐(0)
摘要:泛型算法本身不会执行容器的操作,它们只会运行于迭代器之上,执行迭代器的操作。算法永远不会改变底层容器的大小,算法可能会该百年容器中元素的值,也可能在容器中移动元素,但永远不会直接添加或删除元素。迭代器可以完成向容器添加元素的效果,但宣发自身永远不会做这样的操作。 1.find 例:auto resu 阅读全文
posted @ 2020-04-23 23:41 江雨牧 阅读(164) 评论(0) 推荐(0)
摘要:当我们delete一个动态分配的对象的指针时将执行析构函数。如果指针指向继承体系中的某个类型,则有可能出现指针的静态类型与被删除的动态类型不相符合的情况。例如,如果我们要delete一个parent*(父类指针)类型的对象,则该指针可能指向了一个son(子类)类型的对象。如果这样的话,编译器就必须清 阅读全文
posted @ 2020-04-21 19:04 江雨牧 阅读(314) 评论(0) 推荐(0)
摘要:有时候不想让类的对象支持复制和赋值,即不支持下面第五行和第六行的操作 1 class HomeForSale {...}; 2 3 HomeForSale h1; 4 HomeForSale h2; 5 HomeForSale h3(h1);//不想通过 6 h1=h2;//也不想通过 如果自己不声 阅读全文
posted @ 2020-04-21 17:19 江雨牧 阅读(194) 评论(0) 推荐(0)
摘要:bind可以看作一个函数适配器,接受一个可调用对象生成一个新的可调用对象来适应原对象的参数列表。 形式:auto newCallable=bind(callable,arg_list); newCallable本身是一个可调用对象,arg_list是一个逗号隔开的参数列表,对应callable中的参 阅读全文
posted @ 2020-04-17 20:02 江雨牧 阅读(633) 评论(0) 推荐(0)
摘要:一个lambda表达式表示一个可调用的代码单元,可以理解为一个未命名的内联函数。与函数类似,一个lambda具有一个返回类型、一个参数列表和一个函数体,但与函数不同,lambda可能定义在函数内部。 形式:[capture list](parameter list)->return type{fun 阅读全文
posted @ 2020-04-17 19:24 江雨牧 阅读(136) 评论(0) 推荐(0)
摘要:谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(只接受一个参数)和二元谓词(只接受两个参数) 例子:sort接受谓词作为第三个参数来进行排序 1 bool isShorter(const string s1,const string s2) 2 { 阅读全文
posted @ 2020-04-17 18:20 江雨牧 阅读(537) 评论(0) 推荐(0)
摘要:添加元素 1.push_back 向尾部添加一个元素,除了array与forward_list不支持外,其余顺序容器皆支持 形式:c.push_back(t) 注:把一个对象添加到容器中,实际上放入的是对象的拷贝值而不是对象本身,随后对容器中元素的任何改变都不会影响原始对象。 2.push_fron 阅读全文
posted @ 2020-04-16 23:17 江雨牧 阅读(142) 评论(0) 推荐(0)
摘要:有时候我们想给函数传递实参,但是实参的数目又无法预知,这时候该怎么办? initializer_list形参 如果函数的实参数目未知但是全部实参的类型都相同,可以使用initializer_list类型的形参。initializer_list是一种标准库类型,用于表示某种特定类型的值的数组。init 阅读全文
posted @ 2020-04-16 17:44 江雨牧 阅读(281) 评论(0) 推荐(0)
摘要:首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介假设我们有下面的类层 阅读全文
posted @ 2020-04-11 11:15 江雨牧 阅读(478) 评论(0) 推荐(0)
摘要:原文链接:https://blog.csdn.net/shun01/article/details/17021871 1,cin,表示标准输入(standard input)的istream类对象.cin使我们可以从设备读取数据.2,cout,表示标准输出(standard output)的ostr 阅读全文
posted @ 2020-04-06 13:46 江雨牧 阅读(569) 评论(0) 推荐(0)
摘要:原文链接:https://www.cnblogs.com/VVingerfly/p/5990714.html 随机数 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数 阅读全文
posted @ 2020-04-06 11:50 江雨牧 阅读(504) 评论(0) 推荐(0)
摘要:getch():所在头文件:conio.h函数用途:从控制台读取一个字符,但不显示在屏幕上函数原型:int getch(void)返回值:读取的字符例如:char ch;或int ch;getch();或ch=getch();用getch();会等待你按下任意键,再继续执行下面的语句;用ch=get 阅读全文
posted @ 2020-03-30 13:44 江雨牧 阅读(1391) 评论(0) 推荐(0)
摘要:1 class Sales_data 2 { 3 public: 4 string isbn() const {return bookNo;} 5 private: 6 string bookNo; 7 } Sales_data total;//total是该类的一个对象 total.isbn(); 阅读全文
posted @ 2020-03-19 23:37 江雨牧 阅读(114) 评论(0) 推荐(0)
摘要:本篇转自http://c.biancheng.net/view/422.html 程序运行时常会碰到一些异常情况,例如: 做除法的时候除数为 0; 用户输入年龄时输入了一个负数; 用 new 运算符动态分配空间时,空间不够导致无法分配; 访问数组元素时,下标越界;打开文件读取时,文件不存在。 这些异 阅读全文
posted @ 2020-03-01 15:18 江雨牧 阅读(577) 评论(0) 推荐(0)
摘要:char str[6]="hello"; 当编译器遇到这句时,会把str数组中从第一个元素把hello\0 逐个填入。C语言中规定数组名代表数组所在内存位置的首地址,也是 str[0]的地址,即str = &str[0]; char str[6]="hello"; cout<<str<<" "<<s 阅读全文
posted @ 2020-03-01 11:04 江雨牧 阅读(1493) 评论(0) 推荐(0)
摘要:严格来说,C++语言中美有多维数组,通常所说的多维数组其实是数组的数组,记住这一点对于以后了解和使用多维数组大有裨益。 当一个数组的元素仍然是数组时,通常使用两个维度来定义它:一个维度表示数组本身大小,另外一个维度表示其元素(也是数组)大小。 int ia[3][4];//大小为3的数组,每个元素是 阅读全文
posted @ 2020-02-29 12:30 江雨牧 阅读(287) 评论(0) 推荐(0)