参考:《C++ STL编程轻松入门》
http://tech.163.com/05/0613/10/1M4EA0US00091589.html,该文章讲得不错,生动形象并不乏乐趣,三个版本的程序附有层次感,让人倍感程序设计的微妙之美。本人遂将其中演示代码整合了一下,以飨读者。
程序功能:从键盘中读取若干整数,直到非整数字符为止;排序,然后输出。
程序设计:给出了三个版本完成该功能,可以选择演示那个版本。
运行平台:VS2010
具体实现说明见代码:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
void ver001();
void ver002();
void ver003();
int main()
{
int i;
cout<<"please input version: 1,2 or 3 ?"<<endl;
cin>>i;
switch(i)
{
cout<<"please input some numbers, ends with non-number!"<<endl;
case 1:
cout<<"test of ver001:"<<endl;
ver001();
break;
case 2:
cout<<"test of ver002:"<<endl;
ver002();
break;
case 3:
cout<<"test of ver003:"<<endl;
ver003();
break;
}
system("pause");
}
/*
第一版:史前时代--钻木取火
调用C语言函数库,自己实现比较函数
*/
int int_cmp(const void *a,const void *b);
void ver001()
{
const int max_size = 10;//数组大小
int nums[max_size];
int cnt=0;
while(cin>>nums[cnt++]);
cnt--;//计算数字个数
qsort(nums,cnt,sizeof(int),int_cmp );
for(int it=0; it<cnt; it++)
cout<<nums[it]<<" ";
cout<<endl;
}
/*
整数比较
*/
int int_cmp(const void *a, const void *b)
{
// a>b,返回1;a==b,返回0;a<b,返回-1;
return ( *(int *)a > *(int *)b ) ? 1 : ( *(int *)a < *(int *)b ) ? -1 : 0;
}
/*
第二版:工业时代--组件化大生产
调用基本的STL,没使用适配器、迭代器等
*/
void ver002()
{
vector<int>nums;
int n;
while(cin>>n)
nums.push_back(n);
sort(nums.begin(),nums.end());//排序算法
for(int i=0; i!=nums.size(); i++)
cout<<nums[i]<<" ";
cout<<endl;
}
/*
第三版:唯物主义的杰作
大量使用适配器、迭代器
*/
void ver003()
{
typedef vector<int> int_vector;
typedef istream_iterator<int> istream_itr;//输入流适配器
typedef ostream_iterator<int> ostream_itr;//输出流适配器
typedef back_insert_iterator<int_vector> back_ins_itr;//容器适配器,可以实现在容器末尾插入的功能
int_vector nums;
//从cin流适配器中拷贝int数据,直到非整数为止,到尾部可插入的适配器中
copy(istream_itr(cin),istream_itr(),back_ins_itr(nums));
sort(nums.begin(),nums.end());
//拷贝nums的内容到输出流中,以空格分隔
copy(nums.begin(),nums.end(),ostream_itr(cout," "));
cout<<endl;
}
分享到:
相关推荐
《C++ STL编程速查宝典》:深入解析与实用指南 C++ Standard Template Library(STL)是C++编程语言中的一个强大的组件库,它提供了丰富的数据结构、算法以及迭代器,极大地简化了程序员的工作,提高了代码的可读性...
"01 C++书写HelloWorld_通用C++模板_"这个标题暗示了我们将探讨如何使用C++编写基础的"Hello, World!"程序,并介绍一个通用的C++模板,它可以帮助初学者快速开始编程。 "Hello, World!"是学习任何编程语言时的第一...
char *str = "HelloWorld"; int main() { vector<int> vec1(ar, ar + 10); // 使用数组初始化向量 vector<char> vec2(str, str + strlen(str)); // 使用字符串初始化向量 cout ; // 打印向量 vec1 for (auto...
在学习C++时,首先接触的通常是“Hello World”程序,它标志着编程之旅的开始。在C++中,我们使用`#include <iostream>`来引入输入输出流,`std::cout`用于输出,而`std::endl`则用于换行。与C语言不同,C++的输入...
通过200个实例的学习,你将逐步深入C++的世界,从简单的Hello, World!程序到复杂的类设计,再到实际问题的解决方案。每个例子都是理解C++语言及其应用的关键一步。不断地练习和实践,你将能更好地掌握这个强大的编程...
在实际编程中,C++的现代库如STL(Standard Template Library)提供了容器、迭代器、算法等功能,使得代码更简洁、高效。而C语言虽然没有内置的库支持,但有丰富的第三方库,如GLibC、POSIX等,能够实现类似的功能。...
【HelloWorld.zip】是一个针对初学者的C++编程学习资源包,它包含了基本的C++程序,名为"HelloWorld",这是一个经典的入门级程序,旨在帮助新手熟悉编程环境,理解编程概念,以及如何在C++中输出“Hello, World!...
这份学习资料包含了一系列精心设计的编程任务,旨在让学习者通过亲自动手编写和调试代码,提升对C++的掌握程度,从而摆脱仅仅停留在“Hello, World”级别的基础阶段。 C++是面向对象编程(OOP)的代表语言,其强大...
在C++编程中,STL(Standard Template Library,标准模板库)是一个强大的工具集,它包含了许多高效的数据结构和算法。然而,在深入STL之前,我们需要先了解C++中的传统字符串处理方法,这也是"捷训C++ STL视频教程...
STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。对于C++程序员来说,掌握STL的高级编程技巧是成为高手的必要条件。以下是一些STL中...
接下来,"c++简单程序设计"引导学习者编写第一个“Hello, World!”程序,掌握基本的语法结构,如变量声明、常量、运算符、流程控制(如if语句、switch语句、for循环和while循环)等。 "函数讲解"部分讲解了如何定义...
实例一讲可能从基础开始,讲解如何设置开发环境,创建第一个“Hello, World!”程序,逐步引导读者熟悉IDE(集成开发环境)的使用。接下来的实例可能涉及变量、数据类型、运算符、流程控制语句等基础知识的运用。 ...
STL 是 C++ 中非常重要的一个组成部分,掌握 STL 的使用对于提高编程效率和代码质量至关重要。以上内容涵盖了 STL 的主要组成部分及其基本用法,希望对初学者有所帮助。在实际开发过程中,应根据具体需求选择合适的...
内容概要:本文档精选了20个C++编程实例,详细解释了C++的基本语法和高级特性,涵盖从简单的“Hello World”程序到复杂的面向对象编程和泛型编程等多个方面。每个实例都附有代码和简明注释,帮助读者理解和掌握C++的...
总之,"CppStudy_helloworld_"的压缩包很可能是一个全面介绍C++编程的教程,适合初学者入门,也包括了进阶话题,如面向对象编程和STL的使用。通过学习这些内容,开发者能够掌握C++的基本技能,并逐步精通这门强大的...
从简单的打印“Hello, World!”开始,逐渐挑战更复杂的任务。理解和掌握指针是C语言的关键,而在C++中,理解面向对象编程的概念同样重要。同时,熟悉标准库(如C++的STL)将使你的编程更加高效。 总的来说,这份C和...
创建一个新的C++项目,在源代码文件中输入经典"Hello, World!"程序: ```cpp #include int main() { std::cout << "Hello, World!" ; return 0; } ``` 保存文件,如命名为`hello.cpp`。然后在IDE中构建并运行...
### STL编程手册知识点详解 #### 一、STL概述 STL(Standard Template Library,标准模板库)是C++标准库的重要组成部分,提供了一系列高效的数据结构和算法,以通用编程的方式实现。它主要包括容器(Containers)...
书中很可能包含了一系列逐步展开的案例,从基础的“Hello, World!”程序到复杂的系统应用,帮助读者从理论到实践,全面理解C++编程的精华。通过这样的实践学习,读者不仅可以掌握编程语言的基础,还能培养解决问题和...
编译命令可能是`g++ HelloWorld.cpp -o HelloWorld`,之后通过`./HelloWorld`执行程序。 7. **C++的关键特性**: - 面向对象:C++支持类、对象、继承、封装和多态等面向对象特性。 - 动态内存管理:使用`new`和`...