- 浏览: 1484496 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
#include <iostream> #include <vector> #include <algorithm> #include <cstdlib> using namespace std; int main(void) { vector<int> num; // STL中的vector容器 int element; // 从标准输入设备读入整数, // 直到输入的是非整型数据为止 while (cin >> element) //ctrl+Z 结束输入 num.push_back(element); // STL中的排序算法 sort(num.begin(), num.end()); // 将排序结果输出到标准输出设备 for (int i = 0; i < num.size(); i ++) cout << num[i] << "\n"; system("pause"); return 0; }
这个程序的主要部分改用了STL的部件,看起来要比第一个程序简洁一点,你已经找不到那个讨厌的compare函数了。它真的能很好的运行吗?你可以试试,因为程序的运行结果和前面的大致差不多,所以在此略去。我可以向你保证,这个程序是足够健壮的。不过,可能你还没有完全看明白程序的代码,所以我需要为你解释一下。毕竟,这个戏法变得太快了,较之第一个程序,一眨眼的功夫,那些老的C++程序员所熟悉的代码都不见了,取而代之的是一些新鲜玩意儿。
程序的前三行是包含的头文件,它们提供了程序所要用到的所有C++特性(包括输入输出处理,STL中的容器和算法)。不必在意那个.h,并不是我的疏忽,程序保证可以编译通过,只要你的C++编译器支持标准C++规范的相关部分。你只需要把它们看作是一些普通的C++头文件就可以了。事实上,也正是如此,如果你对这个变化细节感兴趣的化,可以留意一下你身旁的佐餐。
同样可以忽略第四行的存在。加入那个声明只是为了表明程序引用到了std这个标准名字空间(namespace),因为STL中的那些玩意儿全都包含在那里面。只有通过这行声明,编译器才能允许你使用那些有趣的特性。
程序中用到了vector,它是STL中的一个标准容器,可以用来存放一些元素。你可以把vector理解为int [?],一个整型的数组。之所以大小未知是因为,vector是一个可以动态调整大小的容器,当容器已满时,如果再放入元素则vector会悄悄扩大自己的容量。push_back是vector容器的一个类属成员函数,用来在容器尾端插入一个元素。main函数中第一个while循环做的事情就是不断向vector容器尾端插入整型数据,同时自动维护容器空间的大小。
sort是STL中的标准算法,用来对容器中的元素进行排序。它需要两个参数用来决定容器中哪个范围内的元素可以用来排序。这里用到了vector的另两个类属成员函数。begin()用以指向vector的首端,而end()则指向vector的末端。这里有两个问题,begin()和end()的返回值是什么?这涉及到STL的另一个重要部件--迭代器(Iterator),不过这里并不需要对它做详细了解。你只需要把它当作是一个指针就可以了,一个指向整型数据的指针。相应的sort函数声明也可以看作是void sort(int* first, int* last),尽管这实际上很不精确。另一个问题是和end()函数有关,尽管前面说它的返回值指向vector的末端,但这种说法不能算正确。事实上,它的返回值所指向的是vector中最末端元素的后面一个位置,即所谓pass-the-end value。这听起来有点费解,不过不必在意,这里只是稍带一提。总的来说,sort函数所做的事情是对那个准整型数组中的元素进行排序,一如第一个程序中的那个qsort,不过比起qsort来,sort似乎要简单了许多。
程序的最后是输出部分,在这里vector完全可以以假乱真了,它所提供的对元素的访问方式简直和普通的C++内建数组一模一样。那个size函数用来返回vector中的元素个数,就相当于第一个程序中的变量n。这两行代码直观的不用我再多解释了。
我想我的耐心讲解应该可以使你大致看懂上面的程序了,事实上STL的运用使程序的逻辑更加清晰,使代码更易于阅读。试问,有谁会不明白begin、end、size这样的字眼所表达的含义呢(除非他不懂英语)?试着运行一下,看看效果。再试着多输入几个数,看看是否会发生数组越界现象。实践证明,程序运行良好。是的,由于vector容器自行维护了自身的大小,C++程序员就不用操心动态内存分配了,指针的错误使用毕竟会带来很多麻烦,同时程序也会变得冗长无比。
发表评论
-
决策树算法
2009-12-29 09:08 6739id3 和 c4.5代码公共 ... -
AI 决策树ID3 代码(c++)
2009-12-29 09:06 2889http://blog.csdn.net/cctt_1/arc ... -
Const用法小结
2009-12-14 20:01 1216关于C++中的const关键字的用法非常灵活,而使用const ... -
虚函数:从零开始(转)
2009-12-14 20:01 951虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做 ... -
学用VC++进行Winsock编程
2009-12-14 19:59 1769学用VC++进行Winsock编程 说到Winsock, ... -
用标准C++进行string与各种内置类型数据之间的转换
2009-12-13 19:39 4038要实现这个目标,非stringstream类莫属。这个类在&l ... -
回复 C++中如何将Int类型转换为String类型?
2009-12-13 19:32 8217像是C#,java等高级语言中,int转String类型都是很 ... -
请问标准C++里如何将一个int转换为string?除了itoa还有别的方法吗?
2009-12-13 19:31 5941我从文件中读取的数据为string型,要实现到数据型的转化,C ... -
有关c++ string类
2009-12-13 18:57 1390之所以抛弃char*的字符 ... -
string char*之类的相互转换
2009-12-13 18:55 33071 CString,int,string,char*之间的转换 ... -
Vector用法(C++ Primer中文版)
2009-12-13 14:34 4322Vector用法(C++ Primer中 ... -
cin如何结束
2009-12-12 21:13 2890输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字 ... -
cin, cin.get(),cin.getline()
2009-12-12 21:08 4122cin读入数据遇到空格结束;并且丢弃空格符,输入遇到回车符 ... -
c/c++ 获取时间
2009-12-12 19:44 2081//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #i ... -
循环队列(C语言版)
2009-11-30 13:00 10873循环队列(C语言版) ... -
C语言优先级列表
2009-11-30 12:40 4905醋 -初等,4个: ( ) [ ] -> 指向结构体成 ... -
C/C++语言void及void指针深层探索
2009-11-29 20:28 11841.概述 许多初学者对C/C++语言中的void及 ...
相关推荐
组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、<vector>、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。
关于C++STL模板库Vector的基本操作函数的介绍与用法举例
组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的几个头文件:、<vector>、、、、、、、、、、、和。文件中主要介绍了前面八个的使用,并且重点介绍了他们的属性和一些成员函数的使用。
5 STL标准程序库 16 5.1 STL组件 16 5.1.1 分类 16 5.1.2 基本观念 16 5.1.3 好处 16 5.2 容器(containers) 16 5.2.1 分类 16 5.2.2 序列式容器示例 16 5.2.3 关联式容器 18 5.3 迭代器 18 5.3.1 示例 19 5.3.2 ...
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术...在C++标准中,STL被组织为下面的13个头文件:、、、、<vector>、、、、、、、和。
c++vector容器(#include<vector>
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++...
C++标准函数库中80%是STL,其中广泛使用了泛性编程思想,在其中分为几大部分。 1:语言支持部分。 2:诊断部分。包含了异常处理,断言,错误代码三大方式。 3:通用工具部分。包括动态内存管理工具,日期/时间处理...
C++_STL标准模板库 比较全面 STL 简介 2 顺序性容器 2.1 C++ VECTOR(向量容器) 2.2 C++ LIST(双向链表) 2.3 C++ DEQUE(双向队列) 2.4 三者比较 3 关联容器 3.1 特点 3.2 C++ SETS & MULTISETS 3.3 C++ ...
第4章 C++ STL泛型库概述 48 4.1 C++ STL的发展历程 48 4.2 C++ STL的各种实现版本 49 4.2.1 HP STL 49 4.2.2 SGI STL 50 4.2.3 STLport 50 4.2.4 P.J.Plauger STL 50 4.2.5 Rouge Wave STL 50 4.3...
本人花了好长时间整理,包含了stl的各种容器及迭代器,顺便加上了algorithm的一些基本函数,绝对有价值
学过C++的人肯定会很熟悉STL标准模板库,STL其实是封装了一系列的接口,供我们调用。很多函数或者算法的实现不需要我们从头开始写,大大提高我们的编程效率。这篇博客在简单介绍STL的情况下,会详细的来介绍vector的...
1. 函数模板 3 2. 类模板 4 二、 STL概论 6 三、 STL的组件以及关系 6 四、 常用容器介绍 7 1. 序列式容器 7 1.1 Vector 7 1.2 List 16 2. 关联式容器: 22 2.1 Set 22 2.2 multiset 24 2.3 map 27 2.4 multimap 29 ...
第4章 C++ STL泛型库概述 48 4.1 C++ STL的发展历程 48 4.2 C++ STL的各种实现版本 49 4.2.1 HP STL 49 4.2.2 SGI STL 50 4.2.3 STLport 50 4.2.4 P.J.Plauger STL 50 4.2.5 Rouge Wave STL 50 4.3...
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能
vector是C++标准模版库(STL,Standard Template Library)中的部分内容。之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说:vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。...
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该...在C++标准中,STL被组织为下面的13个头文 件:、、、、<vector>、、、、、、、 和。
详细介绍标准库STL中的容器:vector、list、forward_list、deque、string、array,讲解常用函数,并举例说明常见的用法和原理。
STL是高效的C++程序库,是大量类模板和函数模板的聚集,主要的组成部分包括容器、迭代器、算法、函数等。其中容器是存放对象的集合,使用类模板方式; 选代器是容器与算法的粘合剂,是所谓的泛型指针, 使用类模板方式...