
c++
文章平均质量分 69
shanshanhi
这个作者很懒,什么都没留下…
展开
-
c++ --->vector容器总结
1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=vec.begin();it!=vec.end();it++) cout转载 2016-03-30 14:36:52 · 411 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-转载 2017-03-13 17:50:37 · 247 阅读 · 0 评论 -
C++实现顺序栈的基本功能
栈是限定仅在表头进行插入和删除操作的线性表,有着先进后出的特点(FILO);现在我来动手实现栈的基本本功能练练手;定义栈的头文件如下:[cpp] view plain copy#ifndef CSTOCK_H_ #define CSTOCK_H_ const int STOCK_SIZE = 100;//定转载 2017-03-13 17:32:36 · 1017 阅读 · 0 评论 -
C++运算符重载讲解与经典实例
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2017-03-13 17:25:28 · 334 阅读 · 0 评论 -
C++模板:函数模板和模板函数
1.函数模板的声明和模板函数的生成1.1函数模板的声明函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。函数模板的声明形式为:template(参数表){ 函数体}其中,template是定义模板函数的关键字;template后面的转载 2017-03-13 17:18:30 · 391 阅读 · 0 评论 -
C++抽象类
一、纯虚函数定义. 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。转载 2017-03-13 17:15:35 · 556 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2017-03-13 10:26:19 · 226 阅读 · 0 评论 -
关于构造函数 和 析构函数 能否抛出异常的讨论
构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负责创建并初始化对象的内部环境,包括分配内存、创建内部对象和打开相关的外部资源,等等。而当对象死亡时,析构函数负责关闭资源、释放内部的对象和已分配的内存。在对象生死攸关的地方,如果程序代码出现问题,常常会发生内存泄漏,从而产生可能危害系统运行的孤魂野鬼。大量的事实表明,业务逻辑代码写得非常严谨转载 2017-03-07 22:15:59 · 507 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include转载 2017-03-07 19:55:45 · 214 阅读 · 0 评论 -
emplace_back() 和 push_back 的区别
在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题是临时变量申请的资源就浪费。 引入了右值引用,转移构造函数(请看这里)后,push_back()右值时就会调用构造函数和转移构造函数。 在这上面有进一转载 2017-02-23 16:29:08 · 343 阅读 · 0 评论 -
汉诺塔问题
在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,求把圆盘从下面开始按大小顺序重新摆放在另一根柱子上需要移动多少次。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。解答:我们可以拿n=3的时候举例子:易知f(1)=1,f(2)=3,f(3)=7……;当n=2时候(1,2,3分别表示小中大三块盘子):当n=3时候:转载 2017-01-11 16:53:48 · 1913 阅读 · 0 评论 -
c++中map与unordered_map的区别
c++中map与unordered_map的区别头文件map: #include unordered_map: #include 内部实现机理map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操转载 2017-02-28 21:57:16 · 614 阅读 · 0 评论 -
C++ vector 的resize和reverve
1、resize(n) 调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。2、 resize(n,t)多一个参数t,将所有新添加的元素初始化为t。而reserver()的用法只有一种reserve(n)预分配n个元素的存储空间。了解这两个函数的区别,首先要转载 2017-02-28 20:06:42 · 746 阅读 · 0 评论 -
STL---heap概述,make_heap,sort_heap,pop_heap,push_heap。
heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制。而这个实现机制中的max-heap实际上是以一个vector表现的完全二叉树(complete binary tree)。二叉堆(binary heap)就是i一种完全二叉树。也即是。整棵二叉树除了最底层的叶节点以外,转载 2017-01-03 17:08:57 · 414 阅读 · 0 评论 -
priority_queue的用法
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include转载 2017-01-03 17:03:39 · 260 阅读 · 0 评论 -
c++与C#的区别
C#与C++的区别!(1) 编译目标:C++代码经常编译成汇编语言。而C#则编译成中间语言(IL)它与Java的字节代码有些相似。IL随后在通过Iust-In-Time编译进程转换成本机的可执行代码。IL代码将作为一个装配件存储在一个或多个文件中,一个装配件就形成一个单元,IL代码就是在该单元中被打包的,对应于C++编译器创建的一个DLL或可执行文件。 (2)内存管理:C#将开发人转载 2017-01-03 15:03:00 · 314 阅读 · 0 评论 -
c++中的容器总结--
1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让转载 2017-01-02 15:57:25 · 314 阅读 · 0 评论 -
C++中的容器类
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。1、vector 连续存储结构,每个元素在内存上是连续的; 支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操转载 2016-03-30 14:46:41 · 437 阅读 · 0 评论 -
C++四种强制转换
C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++中风格是stat转载 2017-03-13 17:59:47 · 363 阅读 · 0 评论