![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 81
justaipanda
这个作者很懒,什么都没留下…
展开
-
C++学习笔记(一) 序列式容器及适配器
序列式容器容器是存储数据的集合,序列容器则是指明它的存储方式为序列式存储。C++有三种序列式容器:vector,deque,list。其中,前两种都是顺序存储方式,第三种则是指链表。为了实现算法和容器的分离,STL提供的这几个容器都只实现了很少的操作,例如插入,删除,以及对容器本身容量的设置等,而像排序,查找之类的操作则都是由算法库去提供的。从效率上而言,因为前两者是顺序存储,所以他可原创 2012-07-12 20:14:09 · 1058 阅读 · 0 评论 -
C++深度剖析(一) this指针与虚表
我们知道,在C++的非静态成员函数中,有一个隐含的参数,即this指针,利用它,我们可以访问相应对象的数据成员,那么究竟this指针是如何作用的呢?下面先来看一个例子。有下面的一个简单的类:class CNullPointCall{public: static void Test1(); void Test2(); void Test3(int iTest);原创 2012-11-01 18:04:17 · 6519 阅读 · 0 评论 -
Qt经典出错信息之"Basic XLib functionality test failed!"
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。原文链接:Qt经典出错信息之"Basic XLib functionality test failed!"此完整出错信息是在./configure阶段Basic XLib functionality test failed!转载 2012-09-06 15:34:09 · 1060 阅读 · 0 评论 -
C++学习笔记(十) 内存机制与Allocator
C++为我们提供了安全的内存空间申请方式与释放方式,但是new与delete表达式却是把空间的分配回收与对象的构建销毁紧紧的关联在一起。实际上,作为与C语言兼容的语言,C++也为我们提供了更加底层的内存操作方式的。谈C++就离不开STL,考虑一下vectortemplate void Vector::push_back(const T& t){// are we out of s原创 2012-07-26 20:57:29 · 10818 阅读 · 1 评论 -
C++学习笔记(七) 模板与泛型编程
模板简介模板是C++一个非常重要的特性,它是C++泛型编程的基础。某些对C++持极度偏见的人甚至说模板是C++对这个世界的唯一贡献(当然,我是不赞同的),可见模板在C++中的重要性,而整个STL都是基于模板的,可见其应用之广泛。C++引入模板的一个重要原因是算法的重用,比如下面一个例子:bool mless_than(const int& v1, const int& v2) { r原创 2012-07-24 10:36:24 · 3004 阅读 · 1 评论 -
C++学习笔记(九) 异常机制
同大多数的高级语言一样,C++也有自己的异常处理机制,用于方便的处理程序运行过程中可以预料但不可避免的错误。C++的异常抛出方法是用throw关键字,同java不一样,C++可以抛出任何类型,包括原生数据类型和自定义数据类型等,而java则允许抛出实现throwable接口的类的实例。有一点需要注意的是,C++不存在数组或函数类型的异常,如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针原创 2012-07-25 14:58:03 · 1213 阅读 · 0 评论 -
C++学习笔记(八) 智能指针
指针是C++从C继承过来的一个强大而有效的工具,指针被人诟病的地方有很多,其中内存管理的艰难性就是其中之一。比如一个在堆中维护的对象,有好几个指针都指向它,那么究竟由谁来负责释放内存呢?小程序还好说,大程序往往很难理清其中的逻辑,一个处理不好就会造成内存泄露这样的严重问题。智能指针就是这样一种实现机制,它通过一种引用计数器的实现原理,来保证由最后一个指向该对象的指针负责释放内存,将管理内存的工原创 2012-07-24 11:30:06 · 1041 阅读 · 0 评论 -
C++学习笔记(六)函数对象
函数对象基本介绍函数对象是一个普通的类对象,它的不普通之处在于它表现出一个函数的特征,即可以像普通函数那样进行函数调用操作。它的实现方式是对call操作符进行重载。函数对象通常具有比普通函数更大的灵活性,例如,我们看下面这个例子。bool GT6(int data) { return data > 6;}这个函数的实现目的是比较一个数是否大于6,加如我们现在需要这样的原创 2012-07-19 15:44:39 · 1928 阅读 · 0 评论 -
C++学习笔记(五) 类杂谈
const成员函数const成员函数的存在的价值主要在于const对象。我们知道const对象是不可以被修改的,为了保证const对象不能被修改,编译器规定const对象只能调用const修饰的成员函数,它会检查该类成员函数以保证调用此函数不会修改对象的状态。Const对象只能调用const成员函数,而非const对象则是所有的成员函数都可以调用,但是,有时候,我们也希望const对象原创 2012-07-17 17:27:24 · 829 阅读 · 0 评论 -
C++学习笔记(四) 通用算法
正如STL为我们封装了很多数据结构一样,STL同样也为我们提供了很多通用算法,例如排序,查找等。这些算法本身实际上就是一种函数模板,它不依赖与具体的类型,而是通过迭代器和模板来实现的。对于通用算法,这里有一个重要的概念,那就是:算法绝不执行Container操作,它只会使用迭代器来执行它的逻辑,永远不会直接的去调用容器本身的函数。如果我们为算法提供的是原始迭代器,那么算法就绝不会改变底层容器的大小原创 2012-07-16 11:21:43 · 783 阅读 · 0 评论 -
C++学习笔记(三) 迭代器
迭代器迭代器用于存取一个序列中的元素,其用法类似于指针(实际上迭代器就可以看做是泛化的指针)。不同的是,迭代器比指针更为抽象,它可以指向容器中的一个位置,而我们不必关心这个位置对应的真正物理地址。iterator从操作方法分可分为如下5类:Input iteratorRead, but not write; increment only原创 2012-07-15 21:32:05 · 1401 阅读 · 2 评论 -
C++学习笔记(二)联想容器
概述C++primer对联想容器的定义如下:A type that holds a collection of objects that supports efficient lookup by key实际上,和序列式容器不同,联想容器是考关键字进行搜索的,它的底层实现不是简单的顺序表或链表,而是更加复杂的红黑树,这种数据结构具备顺序表和链表的双重优点,同时拥有很高插入效率和查询效原创 2012-07-14 10:24:51 · 1297 阅读 · 0 评论 -
详解STL中的allocator
实例化的时候不需要自己定义allocator。如果你要自己编写allocator的话 1:没有必要 2.对于新手来说很复杂。 所以你直接用默认的就可以了。默认的allocator是一个模板,会自动的帮你替换成allocator的,所以你不需要管。 想用字符串的向量直接:std::vector就可以了。条款10:注意分配器的协定和约束分配器转载 2012-10-28 21:41:43 · 5492 阅读 · 0 评论