- 浏览: 1536510 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 6778id3 和 c4.5代码公共 ... -
AI 决策树ID3 代码(c++)
2009-12-29 09:06 2945http://blog.csdn.net/cctt_1/arc ... -
Const用法小结
2009-12-14 20:01 1250关于C++中的const关键字的用法非常灵活,而使用const ... -
虚函数:从零开始(转)
2009-12-14 20:01 991虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做 ... -
学用VC++进行Winsock编程
2009-12-14 19:59 1824学用VC++进行Winsock编程 说到Winsock, ... -
用标准C++进行string与各种内置类型数据之间的转换
2009-12-13 19:39 4121要实现这个目标,非stringstream类莫属。这个类在&l ... -
回复 C++中如何将Int类型转换为String类型?
2009-12-13 19:32 8271像是C#,java等高级语言中,int转String类型都是很 ... -
请问标准C++里如何将一个int转换为string?除了itoa还有别的方法吗?
2009-12-13 19:31 5986我从文件中读取的数据为string型,要实现到数据型的转化,C ... -
有关c++ string类
2009-12-13 18:57 1438之所以抛弃char*的字符 ... -
string char*之类的相互转换
2009-12-13 18:55 33431 CString,int,string,char*之间的转换 ... -
Vector用法(C++ Primer中文版)
2009-12-13 14:34 4382Vector用法(C++ Primer中 ... -
cin如何结束
2009-12-12 21:13 2983输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字 ... -
cin, cin.get(),cin.getline()
2009-12-12 21:08 4177cin读入数据遇到空格结束;并且丢弃空格符,输入遇到回车符 ... -
c/c++ 获取时间
2009-12-12 19:44 2123//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #i ... -
循环队列(C语言版)
2009-11-30 13:00 10927循环队列(C语言版) ... -
C语言优先级列表
2009-11-30 12:40 4959醋 -初等,4个: ( ) [ ] -> 指向结构体成 ... -
C/C++语言void及void指针深层探索
2009-11-29 20:28 12361.概述 许多初学者对C/C++语言中的void及 ...
相关推荐
STL,全称为Standard Template Library,是C++标准库中的一个重要子集,占据了大约80%的库内容。STL的出现极大地提升了C++程序员的开发效率,它以模板为基础,提供了一系列高效的数据结构(容器)和算法。下面将详细...
在学习C/C++标准函数库和模板库时,理解每个函数和容器的使用方法、参数及返回值是非常关键的。同时,掌握如何结合使用这些工具来解决问题,比如如何使用STL容器和算法解决实际的编程问题,以及如何利用模板实现泛型...
C++标准函数库是C++编程语言不可或缺的一部分,它提供了大量的预定义函数和类,极大地丰富了程序员的工具箱,使得代码编写更加高效且可读性强。这些库分为多个部分,包括输入/输出(I/O)、算法、容器、迭代器、数值...
C++标准函数库是C++编程语言不可或缺的一部分,它包含了大量预先定义的函数和类,为程序员提供了丰富的功能,从基本的数据操作到复杂的算法实现。本资源提供了C++标准函数库的英文版和中文版帮助文档,对于学习和...
在《C++标准函数库:教程与参考》一书中,作者详细介绍了这个库的使用方法,并且通过示例代码来展示这些函数、数据结构和算法的实际应用。 首先,我们需要了解C++标准函数库的历史。C++标准函数库并不是从一开始就...
C++标准模板库(STL)是C++编程语言中的一个重要组成部分,它提供了一组高效、可重用的容器、迭代器、算法和函数对象,大大简化了数据结构和算法的实现。STL手册通常会详细阐述这些组件的使用方法,提供实例代码,...
在C++编程中,标准模板库(Standard Template Library,简称STL)是一个极其重要的组成部分,它为程序员提供了高效且易用的数据结构和算法。STL是C++标准库的一个核心部分,极大地提升了代码的可读性和复用性,使得...
这个“C/C++标准函数库查询中文版”显然是为了帮助程序员更便捷地理解和使用这些功能。 在C语言中,标准库主要由ANSI C(C89/C99)和C11标准定义,包括、、、等头文件,其中包含的函数如printf()用于格式化输出,...
STL,全称为Standard Template Library,是C++标准库的核心部分,它提供了一组高效、通用的容器、迭代器、算法和函数对象。在【STL源代码】中,我们可以深入学习并理解这些组件的实现细节,从而提高编程技能和效率。...
STL是C++标准库的一部分,包含了一系列高效的数据结构和算法,如容器、迭代器、算法和函数对象。主要的容器有: 1. **向量(Vector)**:动态数组,支持随机访问和高效插入/删除尾部元素。 2. **列表(List)**:双向...
C++标准模板库(STL)是C++编程语言中不可或缺的一部分,它为开发者提供了大量高效、可重用的容器、算法和迭代器。STL的主要目标是提高代码的效率和可读性,通过使用泛型编程(也称为模板编程)来实现。以下是关于...
STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效、可重用的容器、迭代器、算法和函数对象,极大地提升了C++的编程效率和代码质量。 1. **STL基本概念** STL的...
在C++编程中,库函数和STL(Standard Template Library,标准模板库)是不可或缺的组成部分,它们极大地提升了代码的效率和可读性。本文将深入探讨C++库函数和STL算法,以及如何在实际编程中应用这些概念。 首先,...
C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了一组高效且灵活的容器、算法和迭代器,极大地提高了程序员的生产力。STL的核心概念是泛型编程,它允许编写与具体数据...
C++标准库手册(英文版).chm 和 C++标准函数库(中文版).chm 这两个文档资源分别提供了英文和中文的详细指南,帮助开发者深入理解和使用C++标准库。下面将对其中的一些关键组成部分进行详细介绍: 1. **STL...
C++17 STL标准库的学习教材主要关注C++17引入的新特性,这些特性极大地提升了C++语言的可读性、可维护性和表达性。在本章中,我们将重点讨论结构化绑定这一新特性,它是C++17的一个重要亮点。 结构化绑定允许程序员...
Boost.STL是Boost库的一个重要组成部分,它是对C++标准库STL(Standard Template Library)的扩展和增强,旨在提供更高效、功能更丰富的容器、迭代器、算法和函数对象。Boost库本身是一个开源的C++库集合,其目标是...
C++标准函数库,也被称为C++ Standard Library,是C++编程语言..."C++很全的标准函数库"这一资源,如"C&C++ Reference.chm",无疑是一个学习和查询C++标准库的宝贵资料,对于深入理解和使用C++编程语言具有极大的帮助。
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术...在C++标准中,STL被组织为下面的13个头文件:、、、、<vector>、、、、、、、和。
C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且灵活的容器、算法和迭代器等工具。STL的核心概念是泛型编程,允许代码对多种数据类型进行操作,...