2012年6月15日
摘要: 在STL中基本容器有: string、vector、list、deque、set、mapset 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问set:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少map:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了string、vector、list、deque、set 是有序容器1.stringstring 是basic_string<char> 的实现,在内存中是连续存放的.为了提高效率,都会有保留内存,如string s= "abcd",这时s使用的空间可能就是2 阅读全文
posted @ 2012-06-15 15:59 足球王子 阅读(535) 评论(0) 推荐(0)
摘要: Stack不允许遍历,只有一个出口,只允许对最顶端的元素进行操作。SGI STL默认以deque作为stack的底层结构。为什么要使用deque作为stack的底层结构呢?因为deque可以很容易的封住其中某个方向的接口,而且deque便于扩容,底层结合了list和vector,比起单一的使用list或者vector来实现stack更加方便高效。由于stack是依赖底层容器完成其功能的,所以这种“修改某个物件的接口,形成另一种新的接口”的,叫做adapter。Template<class T, class Sequence=deque<T> > Class stack{ 阅读全文
posted @ 2012-06-15 15:36 足球王子 阅读(3171) 评论(0) 推荐(0)
摘要: 这是微软帮助文档中对集合(set)的解释: “描述了一个控制变长元素序列的对象(注:set中的key和value是Key类型的,而map中的key和value是一个pair结构中的两个分 量)的模板类,每一个元素包含了一个排序键(sort key)和一个值(value)。对这个序列可以进行查找、插入、删除序列中的任意一个元素,而完成这些操作的时间同这个序列中元素个数的对数成比例关 系,并且当游标指向一个已删除的元素时,删除操作无效。”而一个经过更正的和更加实际的定义应该是:一个集合(set)是一个容器,它其中所包含的元素的值是唯一的。这在收集一个数据的具体值的时候是有用的。集 合中的元素按一定 阅读全文
posted @ 2012-06-15 14:58 足球王子 阅读(210) 评论(0) 推荐(0)
摘要: Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述(本篇文章中不用ch 阅读全文
posted @ 2012-06-15 14:32 足球王子 阅读(276) 评论(0) 推荐(0)
摘要: istBox窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数:BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE外,你可以针对列表控件指明专门的风格。LBS_MULTIPLESEL 指明列表框可以同时选择多行LBS_EXTENDEDSEL 可以通过按下Shift/Ctrl键选择多行LBS_SOR 阅读全文
posted @ 2012-06-15 12:59 足球王子 阅读(16572) 评论(0) 推荐(0)
摘要: List容器双向线性表list容器 list类定义了双向的线性表。Vector类支持随机访问,但list只能支持顺序访问,由于list是双向的,因此我们可以按从前到后或者从后到前的顺序来访问list。1.创建一个list对象#include<list>using namespace std; list<int> lst1;list<char> lst2;2.向list对象中添加数值从前面添加: lst1.push_front(0); lst1.push_front(1);从后面添加: lst1.push_back(0); lst1.push_back(1); 阅读全文
posted @ 2012-06-15 11:52 足球王子 阅读(10801) 评论(1) 推荐(0)
摘要: 标准库Vector类型使用需要的头文件:#include <vector>Vector:Vector 是一个类模板。不是一种数据类型。 Vector<int>是一种数据类型。一、 定义和初始化Vector<T> v1; //默认构造函数v1为空Vector<T> v2(v1);//v2是v1的一个副本Vector<T> v3(n,i);//v3包含n个值为i的元素Vector<T> v4(n); //v4含有n个值为0的元素二、 值初始化1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。2> 阅读全文
posted @ 2012-06-15 11:43 足球王子 阅读(19926) 评论(0) 推荐(0)
  2012年6月14日
摘要: //自定义分隔函数int Split(CString source, CString ch,CStringArray &strarr){/*--------------------------------------------------------- * 函数介绍: 从原字符串里按照指定的分隔字符串进行分割,将分隔的结果存放到字符串数组里 * 输入参数:source -- 原字符串ch -- 指定的分隔字符串strarr -- 外部引用的一个字符串数组 * 输出参数: * 返回值 :总共分隔了多少段字符串.-------------------------------------- 阅读全文
posted @ 2012-06-14 10:17 足球王子 阅读(3462) 评论(0) 推荐(0)
摘要: {{AFX_DATA_INIT好像是MFC的注释宏,来初始化成员变量的。我们自定义的变量;并不是和控件相关联的成员变量,MFC可能有时候就识别不了了。就出错。所以要将我们自定义的变量放到 //}}AFX_DATA_INIT的外面。应该就不会有问题 了。 阅读全文
posted @ 2012-06-14 09:57 足球王子 阅读(257) 评论(0) 推荐(0)
摘要: 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 CString strFileTitle; CFileFind finder;... 阅读全文
posted @ 2012-06-14 09:09 足球王子 阅读(615) 评论(0) 推荐(0)