c++
chuxinlgz
serenity
展开
-
C++中的异常处理
C++中的异常处理机制通常的异常抛出和处理主要使用下面这三个关键字:try,throw,catch throw:异常检查部分使用throw表达式来表示它遇到了无法处理的问题,即throw引发了异常。 catch:捕获异常,处理异常。 try:异常处理部分使用try语句块处理异常,try语句块中代码抛出的异常通常会被某个catch子句处理。 注意:1、一个异常如果没有被捕获,则它将终止当前的程原创 2017-04-26 14:34:19 · 289 阅读 · 0 评论 -
二分查找在C++中的实现
首先我们谈一下时间复杂度,时间复杂度即函数、函数计算执行的 基本操作次数。 时间复杂度函数:F(N)=N^2+2N+10 二分查找的时间复杂度为O(lgN) O(N^2) 二分查找:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 二分查找要求: 1.必须采用顺序存储结构原创 2017-04-26 14:47:25 · 681 阅读 · 0 评论 -
C++实现顺序表和单链表
顺序表:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。 确定了起始位置,就可通过公式计算出表中任一元素的地址:LOC(ai)=LOC(a1)+(i-1)*L 1≤i≤n (L是元素占用存储单元的长度) 顺序表的实现一般是实现连续开辟一段空间,然后在进行数据的增删查改(静态顺序表) 其代码实现如下:#include#in原创 2017-07-27 14:17:51 · 529 阅读 · 0 评论 -
C++ String的传统和现代写法的深拷贝
传统写法#include<iostream>using namespace std;class String {public://构造函数 String(char*str=""); :_str(new char[strlen(str)+1]) { strcpy(_str, str); }//拷贝构造 String(cons原创 2017-07-20 21:45:04 · 484 阅读 · 0 评论 -
String——增添查改
对String类进行操作,其中包括构造函数、拷贝构造函数、赋值运算符重载、析构函数以及对String类的增删查改。#include<iostream>#include<assert.h>using namespace std;class String{public: String(char*str="")//默认情况下处理为一个空字符串 //构造 {原创 2017-07-23 18:29:56 · 271 阅读 · 0 评论 -
String——写时拷贝
在前面的文章中我们总结了深拷贝的传统写法和现代写法,这次我们来总结一下写实拷贝。 当我们遇到需要大量拷贝构造,析构同样的空间的情况,传统写法和现代写法不断的开辟空间,析构空间,效率太低,这时,我们就可采用写实拷贝:当一个对象被拷贝构造多次,在不改变内容的情况下,多个对象共用同一个空间。如果某个对象要改变内容,就要另外开辟一块相同的空间,然后改变这个对象的_str指针,再进行写操作。 引用计数的写原创 2017-07-24 20:10:25 · 258 阅读 · 0 评论 -
C++中多态与多态对象模型
一、什么是多态?多态,其实就是多种形态——动态形态和静态形态(即重载)。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。通俗的说,就是两个函数同名,但参数列表不同,然后根据参数不同实现不同的功能, 即“一个接口,多种方法”。 构成多态条件有:虚函数的重写(覆盖) 父类(基类)的指针或者引用指向对象 在进行多态的单/多继承原创 2017-08-01 18:37:17 · 327 阅读 · 1 评论 -
用模板实现顺序表和带头结点的双向循环链表
链表可分为带结点和不带结点,单向和双向以及循环和不循环 双向循环链有指向前一个数的指针和指向后一个数的指针。 如下图 #include<iostream> #include<assert.h>#include<windows.h>using namespace std; template<class T> struct ListNode { T _data;原创 2017-08-03 20:42:09 · 260 阅读 · 0 评论 -
用C++实现双向链表
#include<iostream>#include<assert.h>using namespace std;typedef int DataType; struct ListNode{ ListNode* _next; ListNode* _prev; DataType _data; ListNode(DataType x) :_data原创 2017-07-27 20:33:09 · 226 阅读 · 0 评论