九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

关于STL容器输出的更进一步简化,便于平时学习使用

 以前我在实际学习过程中因为没有好的容器输出方法而苦恼,目前知道的最简单的方法也可能就是如下方式了:

copy(container.begin(),container.end(),ostream(cout," ");

当然,其实也不是怎么太复杂,只是最开始不怎么知道。到今天,已经知道可以一行代码就输出容器了,我还优化什么啊?看了就知道了。

 


//以容器为输入的简化函数,第二参数为前置的string,默认为空

      template <class T>

      void printCon(const T &orig,const std::string str ="")

      {

           std::cout <<str;

           typename T::const_iterator it;

           for(it = orig.begin();it != orig.end(); ++it)

                 std::cout << *it <<" ";

           cout<<endl;

      }

 

//重载的容器输出函数,以迭代器为输入,方便输出容器的一部份甚至数组,

//第三参数为前置的string,默认为空

      template <class T>

      void printCon(T itBegin, T itEnd, const std::string str ="")

      {

           std::cout <<str;

           for( NULL; itBegin != itEnd; ++itBegin)

                 std::cout << *itBegin <<" ";

           cout<<endl;

      }

 

 

竟然是要简单,所以当然应该提供只需要一个容器参数就可以输出的方法,但是却还想要保留输出范围的能力,怎么办呢?重载。。。。

另外,输出的时候前面一般加说明,这里以一个默认为空的参数加进来,这样更加方便了,另外,我用const std::string而不用const char*是为了应用范围更广泛,因为有char* string的默认构造函数,可以自动转换,反之则不行,不知道这样有没有副作用,高手提醒之。还有,因为常用,我把它放到myself名字空间下。这里未与列出。

 

分类:  C++ 
标签:  C++  STL 

Posted By 九天雁翎 at 九天雁翎的博客 on 2007年10月16日

前一篇: vector成员转换为char输出的六种方法,STL的学习过程乱想 后一篇: Windows 下利用MFC实现的中国象棋棋盘绘制程序