C++ STL vector for_each循环输出

#@C++ STL vector 循环输出

vector 可是说是STL中用的最多的一个模板类,STL 讲数据结构和算法分离,比如对容器中的数据进行排序,查找重复数据等算法都包含在algorithm中,数据和算法的沟通媒介就是迭代器(iterator).
for_each函数就是算法库里的一种,功能是实现循环,
函数原型如下:

for_each(_InputIterator __first, _InputIterator __last, _Function __f)
/**
*  @brief Apply a function to every element of a sequence.
*  @ingroup non_mutating_algorithms
*  @param  __first  An input iterator. 循环开始迭代器
*  @param  __last   An input iterator. 循环结尾迭代器
*  @param  __f      A unary function object. 处理函数
*  @return   @p __f (std::move(@p __f) in C++0x).
*
*  Applies the function object @p __f to each element in the range
*  @p [first,last).  @p __f must not modify the order of the sequence.
*  If @p __f has a return value it is ignored.
*/

注意
使用时需要注意处理函数_Function __f 的参数有且只能有一个 而且参数的类型要和容器内部的数据类型一致
代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Person{
  public:
      int  mAge;
      string mName;
  public:
  Person(){

  };
  Person(int age,string name ){
     mAge = age;
     mName = name;
  };
  ~Person(){

  };
  void show(){
      cout<<" age \t"<<mAge<<"  name \t"<<mName<<endl;

  }

};
void showPerson(Person p){
  p.show();
};
void showPersonPtr(Person *p){
  p->show();
};
int main(){
  Person p1(21,"p1"),p2(22,"p2"),p3(23,"p3");
  // 指针容器 容器内部存储的是对象的指针
  vector<Person*> vpPerson;
  vpPerson.push_back(&p1);
  vpPerson.push_back(&p2);
  vpPerson.push_back(&p3);
  cout<<"指针类型循环输出"<<endl;
  for_each(vpPerson.begin(),vpPerson.end(),showPersonPtr);
  // 普通容器 容器内部存储的是person 对象
  vector<Person> vPerson;
  vPerson.push_back(p1);
  vPerson.push_back(p2);
  vPerson.push_back(p3);
  // 迭代器的类型一定要和容器内部的数据类型一致
  vector<Person>::iterator itBegin = vPerson.begin();
  vector<Person>::iterator itEnd = vPerson.end();
  cout<<"普通类型循环输出"<<endl;
  // 处理函数的参数有且只能有一个 而且类型和容器内部的数据类型必须严格一致
  for_each(itBegin,itEnd,showPerson);

  return 0;
}

输出:

指针类型循环输出
 age    21  name        p1
 age    22  name        p2
 age    23  name        p3
普通类型循环输出
 age    21  name        p1
 age    22  name        p2
 age    23  name        p3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值