![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C,C++ 学习日记
自学笔记
一个半路出家的人
半路出家,不要问我出处。
展开
-
异常处理
异常处理的思想与程序实现异常处理的基本思想异常处理的语法例12-1处理除零异常//12_1.cpp#include <iostream>using namespace std;int divide(int x, int y) { if (y == 0) throw x; return x / y;}int main() { ...转载 2018-07-10 14:03:56 · 137 阅读 · 0 评论 -
I/O流
I/O流的概念及流类库结构程序与外界环境的信息交换当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象、文件对象。 流一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。流对象与文件操作程序建立一个流对象指定这个流对象与某个文件对象建立连接程序操作流对象流对象通过文件系统对所连接的文件对象产生作用。提取与插入读操作在流数据抽象中被称为(从流中)提取写操...转载 2018-07-08 15:09:32 · 327 阅读 · 0 评论 -
仿函数(函数对象)
函数对象一个行为类似函数的对象可以没有参数,也可以带有若干参数其功能是获取一个值,或者改变操作的状态。例普通函数就是函数对象重载了“()”运算符的类的实例是函数对象函数对象概念图例10-13、例10-14:使用两种方式定义表示乘法的函数对象通过定义普通函数(例10-13)通过重载类的“()”运算符(例10-14)用到以下算法:template<class InputItera...转载 2018-07-07 17:23:57 · 1074 阅读 · 0 评论 -
关联容器
关联容器分类和的基本功能关联容器的特点和接口关联容器的特点每个关联容器都有一个键(key)可以根据键高效地查找元素接口插入:insert删除:erase查找:find定界:lowerbound、upperbound、equal_range计数:count关联容器概念图四种关联容器单重关联容器(set和map)键值是唯一的,一个键值只能对应一个元素多重关联容器(multiset和mu...转载 2018-07-03 14:58:18 · 278 阅读 · 0 评论 -
C++,error c2662 cannot convert 'this' pointer from 'const A' to 'A &'
天在写C++代码的时候遇到一个错误,涉及到了常量的this指针的问题。简化后的代码如下:#include <iostream>#include <string>using namespace std;class A{private: string str; string getStr();public: void print() con...转载 2018-07-02 21:37:24 · 2709 阅读 · 1 评论 -
顺序容器
顺序容器的基本功能顺序容器向量(vector)双端队列(deque)列表(list)单向链表(forward_list) (以上四种在逻辑上可看作是一个长度可扩展的数组)数组(array)元素线性排列,可以随时在指定位置插入元素和删除元素。必须符合Assignable这一概念(即具有公有的拷贝构造函数并可以用“=”赋值)。array对象的大小固定,forward_list有特殊的添...转载 2018-07-01 10:34:58 · 471 阅读 · 0 评论 -
容器原理
容器的基本功能与分类容器类是容纳、包含一组元素或元素集合的对象。基于容器中元素的组织方式:顺序容器、关联容器按照与容器所关联的迭代器类型划分:可逆容器随机访问容器容器的基本功能与分类容器顺序容器array(数组)、vector(向量)、deque(双端队列)、forward_list(单链表)、list(列表)(有序)关联容器set(集合)、multiset(多重集合)、map(...转载 2018-07-01 09:04:58 · 1262 阅读 · 0 评论 -
迭代器原理
迭代器迭代器是算法和容器的桥梁迭代器用作访问容器中的元素算法不直接操作容器中的数据,而是通过迭代器间接操作算法和容器独立增加新的算法,无需影响容器的实现增加新的容器,原有的算法也能适用输入流迭代器和输出流迭代器输入流迭代器istream_iterator<T>以输入流(如cin)为参数构造可用*(p++)获得下一个输入的元素输出流迭代器ostream_iterator...转载 2018-07-01 07:47:22 · 1278 阅读 · 0 评论 -
泛型程序设计思想
STL简介标准模板库(Standard Template Library,简称STL)提供了一些非常常用的数据结构和算法STL简介标准模板库(Standard Template Library,简称STL)定义了一套概念体系,为泛型程序设计提供了逻辑基础STL中的各个类模板、函数模板的参数都是用这个体系中的概念来规定的。使用STL的模板时,类型参数既可以是C++标准库中已有的类型,...转载 2018-06-30 18:49:03 · 513 阅读 · 0 评论 -
几种简单的排序方法
插入排序的基本思想每一步将一个待排序元素按其关键字值的大小插入到已排序序列的适当位置上,直到待排序元素插入完为止。插入排序的示意图例9-11 直接插入排序函数模板template <class T>void insertionSort(T a[], int n) { int i, j; T temp; for (int i = 1; i < n; i+...转载 2018-06-30 16:41:59 · 2278 阅读 · 0 评论 -
C++中如何判断链表为空
链表区分带头节点和不带头结点两种。假定链表节点指向下一节点的指针变量名为next。那么区分情况,判断空链表的方法为:1 带头节点。对于带头节点的链表,存在有不变的头结点head,这个节点并不保存任何数据,仅提供链表起始的一个标识。对于此类链表,判断为空的条件为head->next==NULL。当head的next值为NULL,这时链表为空。2 不带头结点。不带头结点的情况,链表的...原创 2018-06-26 11:47:05 · 13160 阅读 · 1 评论 -
头文件#include<assert>
<1>assert断言,函数参数为布尔值,assert(bool);E: assert(size >= 0);bool 值为true时,继续执行以下代码,值为false时,返回exit(1),程序退出原创 2018-06-12 17:14:37 · 534 阅读 · 0 评论 -
运算符重载
运算符重载为成员函数重载为类成员的运算符函数定义形式 函数类型 operator 运算符(形参) { ...... } 参数个数=原操作数个数-1 (后置++、--除外)双目运算符重载规则如果要重载 B 为类成员函数,使之能够实现表达式 oprd1 B oprd2,其中 oprd1 为A 类对象,则 B 应被重载为 A 类的成员函数,形参...转载 2018-06-06 15:39:16 · 192 阅读 · 0 评论 -
虚基类 的作用
虚基类需要解决的问题当派生类从多个基类派生,而这些基类又共同基类,则在访问此共同基类中的成员时,将产生冗余,并有可能因冗余带来不一致性虚基类声明以virtual说明基类继承方式例:class B1:virtual public B作用主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题为最远的派生类提供唯一的基类成员,而不重复产生多次复制注意:在第一级继承时就要将共同基类设计为虚基类...转载 2018-06-02 11:13:02 · 6075 阅读 · 0 评论 -
派生类的构造函数与析构
派生类的构造函数默认情况基类的构造函数不被继承;派生类需要定义自己的构造函数。C++11规定可用using语句继承基类构造函数。但是只能初始化从基类继承的成员。派生类新增成员可以通过类内初始值进行初始化。语法形式:using B::B;建议如果派生类有自己新增的成员,且需要通过构造函数初始化,则派生类要自定义构造函数。若不继承基类的构造函数派生类新增成员:派生类定义构造函数初始化;继承来的成员:自...转载 2018-06-01 14:32:56 · 226 阅读 · 0 评论 -
类的继承与派生
作为一名自学C++的小白,第一次听说面向对象的程序开发这个名词的时候还是很懵逼。在近两个月的学习中,我渐渐地理解了面向对象的程序的开发。以及在学习过程中重点,类!类的继承与派生这个内容对于面向对象的程序开发我认为在程序开发的过程中提高了程序的可移植性,老师说这部分内容要重点领会面对对象的程序开发的思维。好了废话不多说了,开始一个小小的总结。 -------------------------...原创 2018-05-30 17:39:13 · 543 阅读 · 0 评论 -
string类
string类使用字符串类string表示字符串string实际上是对字符数组操作的封装string类常用的构造函数string(); //默认构造函数,建立一个长度为0的串例:string s1;string(const char *s); //用指针s所指向的字符串常量初始化string对象例:string s2 = “abc”;string(const string&...转载 2018-05-23 15:57:23 · 96 阅读 · 0 评论 -
类与对象
首先说一下面向程序开发的特点:自上而下,逐步求精;重点是如何实现细节过程,将数据与函数分开大致形式是:主模块 +若干小模块, 最大的缺点是程序的效率低,可重复性差。面向对象的程序开发:实现软件设计的产业化,自然界是由实体对象所组成,通过对自然界的事物进行高度概括分类,和抽象,使用面向对象的观点来模拟自然界实体事物来解决问题。数据抽象:描述对象的属性或者状态(forexample:int s...原创 2018-05-23 10:48:44 · 82 阅读 · 0 评论 -
C++构造函数
C++构造函数详解(复制构造函数)构造函数是干什么的该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。构造函数的种类 1 class Complex 2 { 3 4 private : 5 double m_real; 6 double m_imag; 7 ...转载 2018-05-23 08:35:42 · 95 阅读 · 0 评论