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

#include <iostream>
#include <vector>
#include <algorithm>

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

 

void show_sequence(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last)

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

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

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

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

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

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

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

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

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

 inspect_vector(v);

 return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经纬方略

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值