`
webcenterol
  • 浏览: 913851 次
文章分类
社区版块
存档分类
最新评论

关于容器输出的学习与简化过程

 
阅读更多

在学习C++标准库的过程中,各种容器是很大一块,每次验证自己的结果输出容器的时候除了string 可以简单的cout<<输出以外,其他的都要for()循环用迭代器遍历,比如输出vector<int> vec容器就要这样

for(vector<int>::iterator it = vec.begin(); it != vec.end(),++it)

cout<<*it<<" :;

cout<<endl;

很不方便,所以以前就自己编了个重载函数printCon以输出常用的容器

void printCon(list<int>::const_iterator,list<int>::const_iterator);
void printCon(deque<int>::const_iterator,deque<int>::const_iterator);
void printCon(vector<int>::const_iterator,vector<int>::const_iterator);
void printCon(vector<string>::const_iterator,vector<string>::const_iterator);

main()

{return 0;}

void printCon(list<int>::const_iterator first,list<int>::const_iterator last)
{
cout<<endl;
for(;first != last;++first)
{
cout <<*first<<" ";
}
cout<<endl;
}
void printCon(deque<int>::const_iterator first,deque<int>::const_iterator last)
{
cout<<endl;
for(;first != last;++first)
{
cout <<*first<<" ";
}
cout<<endl;
}
void printCon(vector<int>::const_iterator first,vector<int>::const_iterator last)
{
cout<<endl;
for(;first != last;++first)
{
cout <<*first<<" ";
}
cout<<endl;
}
void printCon(vector<string>::const_iterator first,vector<string>::const_iterator last)
{
cout<<endl;
for(;first != last;++first)
{
cout <<*first<<" ";
}
cout<<endl;
}

使用起来还算方便,也简洁,只要两个迭代器就可以遍历输出容器,而且输出范围内的容器也可以。就是代码比较复杂,假如要适应全部的容器,代码将会复杂的吓人,但我没有学过模版,不知道那样是不是可以使这个函数简单一些,不过学了流迭代器以后,问题得到了解决,上面那个问题,只需要

std::ostream_iterator<int> ost_iter(cout," ");
std::copy(vec.begin(),.vec.end(),ost_iter);

就可以得到解决了,真是简单多了啊,终于知道为什么C++要定义输出流迭代器这乍一看没有什么用的东西了。

分享到:
评论

相关推荐

    matlab集成c代码-nextflow-example:一个玩具示例Nextflow管道,该管道在Docker容器中运行Rscripts

    Nextflow支持Docker容器技术,并与GitHub代码共享平台集成,可让您编写独立的管道,管理版本并快速重现以前的任何配置。 可移植性 Nextflow在您的管道逻辑和执行层之间提供了一个抽象层,因此它可以在多个平台上执行...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例019 输出错误信息与调试信息 30 实例020 从控制台接收输入字符 31 实例021 重定向输出流实现程序日志 31 实例022 自动类型转换与强制类型转换 33 2.2 运算符 34 实例023 加密可以这样简单(位运算) 34 实例024 ...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA基础课程讲义

    目 录 第一章 JAVA入门 10 ...简化理解上面过程 225 事件和事件源对象 225 事件适配器 232 为什么需要事件适配器 232 事件监听器常见的定义形式 233 AWT其他组件 233 菜单的实现 233 特点 233 代码示例和效果 233

    软件工程知识点

    1.设计过程与任务 概要设计中首先需要进行的是系统构架设计,然后是软件结构、数据结构等方面的设计。主要有以下几个方面的设计任务:制定规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障...

    Ext Js权威指南(.zip.001

    9.2.1 容器的创建过程:ext.container.abstractcontainer与ext.container.container / 431 9.2.2 ext.container.abstractcontainer和ext.container.container的配置项、属性、方法和事件 / 434 9.2.3 将body元素...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    C# for CSDN 乱七八糟的看不懂

    逻辑运算符 与:a & b 或:a | b 第8页 C#(WINFORM)学习 非:! A 模数运算符 模数运算符 (%) 计算第二个操作数除第一个操作数后的余数。所有数值类 型都具有预定义的模数运算符。如 Console.WriteLine(5 % 2); ...

    疯狂JAVA讲义

    学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种...

    Spring.net框架

    我现在还不是很了解,而且越学习越发现自己了解的很少,Ioc与AOP中蕴涵了大量的能量等待我们去开发。在这个系列 中,我仅仅利用Sping.net这个框架向大家展示一下Ioc与AOP的强大功能(呵呵,其实写这段话的目的是因为...

Global site tag (gtag.js) - Google Analytics