const_iterator的使用,STL算法----copy(),输出迭代器---ostream_iterator()

#include
#include
#include

// 注1:在用STL模版库的时候头文件不要加.h,要用命名空间

 

void show_sequence(std::vector::const_iterator first, std::vector::const_iterator last)

// 注2:const_iterator为 vector 中元素的一个 const 迭代器类型,这个类型定义为指向 const T 的迭代器类型

{
 std::cout<<"{";
 std::copy(first, last, std::ostream_iterator(std::cout, " "));

// 注3:copy()的前两个参数是迭代器,它们定义了要复制元素的容器中的源间隔符,复制从 first 开始,一直向前,直到 last 为止,但不包括 last.这两个参数可以接受任何迭代器。copy()函数的第三个参数是指定元素复制的目标位置的迭代器。

// 注4:std::ostream_iterator(std::cout, " ")作用为:创建输出迭代器。第一个参数 cout 是应用这个迭代器的流,第二个参数是用于分隔所传送元素的分隔符。

// 注5:copy()算法把每个源元素赋予目标对象,但并不知道它处理的目标对象是什么类型。copy()函数仅把要复制的对象传送给第三个参数指定的迭代器,并假定迭代器知道应把他们放在什么地方。这样,copy()函数就独立于源对象和它复制的目标对象。
 std::cout<<"}"<  
}
void inspect_vector(const std::vector& v)

// 注6:因为这里用的是 const  类型,所以这个函数调用的上一个函数接收时必须要用 const_iterator

//如果这里用的不是 const  类型,那么上面就可以直接用 iterator 了

{
 std::cout<<"vector has "<  show_sequence(v.begin(), v.end());
}
int main()
{
 std::vector v;  //现在容器中有0个元素

 int values[] = {1,3,5,7};
 v.insert(v.end(), values+1, values+3); //现在容器中有2个元素分别为:3,5

 inspect_vector(v);

 return 0;
}

const_iterator的使用,STL算法----copy(),输出迭代器---ostream_iterator()_第1张图片


你可能感兴趣的:(C/C++,iterator,迭代器,algorithm,stl)