C++
simon-zhao
学习、探索
展开
-
C++ vector
C++中vector的函数列表如下:Constructors 构造函数 Operators 对vector进行赋值或比较 assign() 对Vector中的元素赋值 at() 返回指定位置的元素 back() 返回最末一个元素 begin() 返回第一个元素的迭代器 capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)转载 2014-10-12 15:02:38 · 1715 阅读 · 0 评论 -
C++之STL中sort函数的内部实现(一)
概述STL中提供了一个sort()函数,用于排序。它的实现虽然是基于我们熟悉的quick sort, insertion sort, heap sort,但是内部却庞大复杂。sort()函数只能接受RandomAccessIterators,list slist都不能使用。 STL中的sort()函数在数据量大的时候采用quick sort,分段后的数据量小于某一个门槛时便采用insertion原创 2015-05-20 11:17:58 · 11008 阅读 · 0 评论 -
C++之STL中sort函数的内部实现(二)
另外一个版本:概述先进行introsort,基本有序后再使用insertion sort。introsort是改进的quick sort,为了防止最坏情况发生,它使用__lg()函数控制分割恶化的情况。intro sort算法元素个数检查,大于16个才进行后续操作;分割层次检查,分割层次超过指定值就使用heap sort;全部检查通过后使用quick sort,使用median-of-3方法确原创 2015-05-20 12:45:31 · 3251 阅读 · 0 评论 -
C++之STL中set的用法总结
set概述和vector、list不同,set、map都是关联式容器。set内部是基于红黑树实现的。插入和删除操作效率较高,因为只需要修改相关指针而不用进行数据的移动。 在进行数据删除操作后,迭代器会不会失效呢?删除set的数据时,实际的操作是删除红黑树中的一个节点,然后相关指针做相关调整。指向其他元素的迭代器还是指向原位置,并没有改变,所以删除一个节点后其他迭代器不会失效。list和map也是同原创 2015-05-16 21:39:08 · 27780 阅读 · 1 评论 -
C++中static关键字用法总结
C++中static关键字有两类用法:和C语言用法相同的static和C++面向对象程序中的static。前者是静态全局变量、局部变量和静态函数,后者是类中的静态变量和静态函数。一、和C语言用法相同的static1、静态全局变量特点: - 未初试化的话会被自动初始化为0; - 静态全局变量在全局数据区分配内存; - 静态全局变量在作用域是在本文件内,所以在其他文件中无法被使用原创 2015-05-14 15:39:45 · 1886 阅读 · 0 评论 -
c++之stl中的stack用法总结
stack概述stack是一种“先进先出(FIFO)”数据结构。不允许被遍历,没有迭代器。操作::empty();//判空::size();//元素个数::top();//返回栈顶元素的引用::push(const value_type& x);//进栈::pop();//删除栈顶元素原创 2015-05-15 19:16:51 · 7148 阅读 · 0 评论 -
C++之STL的list用法总结
list概述vector是连续空间,是基于数组的。list是基于链表的,STL的list是双向循环链表。list的元素操作::push_front(const T& x);//插入一个节点,并作为头结点::push_back(const T& x);//插入一个尾节点iterator ::erase(iterator position);//移除迭代器所指的节点::pop_front();//原创 2015-05-15 15:39:05 · 2428 阅读 · 0 评论 -
C++之STL中vector的总结
一、概述vector和数组类似,但是当空间不够用的时候vector可以动态追加空间。追加空间时并不是追加一个元素的空间,而是直接另外申请一个容量加倍的空间然后将原数据拷贝到新空间、释放原空间。二、元素操作1.push_back(elemType elem) 在数组的最后添加一个数据2.pop_back() 去掉数组的最后一个数据 3.at(int i) 得原创 2015-05-15 12:28:00 · 1848 阅读 · 0 评论 -
C++ STL set
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合主要转载 2014-10-12 14:52:18 · 1697 阅读 · 0 评论 -
标准c++中的string类
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的str转载 2014-10-12 14:46:48 · 1693 阅读 · 0 评论 -
c++中的覆盖(override)、重载(overload)与隐藏
定义覆盖(override)覆盖(override)指的是子类重定义父类中的虚函数。特征:分别位于具有继承关系的子类和父类中;父类中的某个函数带有virtual关键字;子类中有与之函数名相同、参数列表相同、返回值相同的函数。重载(overload)重载(overload)指的是在同一范围内,同一个类中或者是同一个作用作用范围中,两个函数具有相同的函数名,但是不同的参数列表或者返回值。特征:原创 2015-05-18 10:35:18 · 1868 阅读 · 0 评论