std::copy ( myvector.begin(), myvector.end(), out_it )

在实际生产环境中,不能进行调试,所以程序通常需要编译一个DEBUG版本来辅助我们找出问题所在,编译这样的DEBUG版本最常用的手段就是在关键处输出我们关心一些变量的值到屏幕。

如果输出的简单的变量值,那么直接输出即可,但如果是向量或者队列等容器,那么就没办法直接输出了,而且写循环遍历也很麻烦,可以使用下面这个函数std::copy()

template <class InputIterator, class OutputIterator>
  OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result);

在实际使用时我们可以这样写代码:

#ifdef DEBUG
            cout << "File sum :" << vecFiles.size() << endl;
            copy(vecFiles.begin(), vecFiles.end(), ostream_iterator<string>(cout, "\n"));
#endif

注意:

copy函数定义在<algorithm>头文件中,所以使用时需要包含该头文件

ostream_iterator定义在<iterator>头文件中,所以使用这个函数时需要包含该头文件

时间: 2024-10-30 09:22:42

std::copy ( myvector.begin(), myvector.end(), out_it )的相关文章

std::copy 和 std::back_inserter

#define print_vector(v1) for(auto iter = v1.begin();iter != v1.end();iter++) cout<<*iter<<" "; cout<<endl; void TestBackInsert() { std::vector<int> v1(3,10); std::vector<int> v2(4,9); //std::copy(v1.begin(),v1.end()

std::copy性能分析与memmove机器级实现

复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. 比如,我写了一段下面的代码,复制100000000数据量,std::copy的性能要比前两个性能要好. const int size = 100000000; int *k = new int[size]; int *p = new int[size]; //const int size = 5F5

C++11 std::copy

这个函数并不是简单的 while(first != last) { *result = *first; result++; first++; } 事实上这种写法是最具普适性的,值要求inputIterator是输入迭代器,outputIterator是输出迭代器 可以想像我们熟悉的链表,vector之类的迭代器都是满足要求的.但这种最具普适性的写法性能却不咋地. 习惯C语言的应该都很喜欢memcpy这个函数,确实高效.在C++里,不是所有的对象拷贝都能简单的memcpy的, c++11给出了一个

STL C++ std::bind操作例子,仿函数操作配合算法库操作

1.stl::bind 和std::mem_fun_ref系列的配合使用出现了问题,多参形式不知道如何组织.适配器的操作真心难受!!!只能迷迷糊糊地用着.要使用非质变算法时需要作用于容器时只能考虑lambda或者transfer操作.待续 // functor-adapter_p431.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <algorithm>//元素操作算法 #include <functiona

iterator-adapter 练习例子

// Iterator-adapter_p427.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include <iterator> #include <deque> #include <set> #include <vector> #include <list> using std::cout; using std::cin; us

gnu编译C++11,最好与win32公用代码

看makefile: #jingz's first file to test makeFile allTarget:stdafx_target 11_12_target g++ stdafx.o functor-adapter_p431.o -o functor-adapter_p431.exe #remove the object files rm -rf stdafx.o functor-adapter_p431.o #complie the cpps into objects stdafx

std::ostream_iterator用法

Defined in header <iterator>    template< class T, class CharT = char, class Traits = std::char_traits<CharT>>          class ostream_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void> std::ostream_it

实战c++中的vector系列--copy set to vector(别混淆了reserve和resize)

stl算法中有个copy函数.我们能够轻松的写出这种代码: #include <iostream> #include <algorithm> #include <vector> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { double darray[10]={1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9}; vector<double> vdoubl

小结STL之std::list

list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容器之前必须加上STL的list容器的头文件:#include<list> list属于stl所以使用前要加 using std::list; (或者直接全局:using namespace std;) Member functions (constructor)Construct list (public mem