vector、list、迭代器 综合应用程序例子

本文介绍如何使用模板函数和迭代器遍历C++标准库容器如vector和list,包括正向和反向打印,以及使用sort函数和自定义比较函数进行排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <string>
#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
using namespace std;

//通过定义模板函数来使用迭代器打印容器中的元素
template<typename container>
void PrintContainers(const container &con)
{
  typename container::const_iterator it=con.begin();
  //因为参数为const 所以这里的迭代器也要用const_iterator
  while(it!=con.end())
  {
    cout<<*it<<" ";
    it++;
  }
  cout<<endl;
}

//通过定义模板函数反向打印容器中的元素(使用反向迭代器)
template<typename  container>
void   ReversePrintContainers( const container & con )
{
	typename container::const_reverse_iterator it=con.rbegin();
  while(it!=con.rend())
  {
    cout<<*it<<" ";
    it++;
  }
  cout<<endl;
}

struct my_sort //自定义比较函数my_sort()降序排列
{
  bool operator()(int i,int j)
  {
    return i>j;
  }
};
void vector_test()//对容器vector进行测试
{
  vector<int> v1;//定义存放int类型的vector容器,依次存放元素2,5,3,1,4
  v1.push_back(2);
  v1.push_back(5);
  v1.push_back(3);
  v1.push_back(1);
  v1.push_back(4);

   PrintContainers(v1);//按顺序打印

  ReversePrintContainers(v1);//反向打印

  sort(v1.begin(),v1.end());//对容器中的元素进行排序,使用sort函数
  PrintContainers(v1);

  
  sort(v1.begin(),v1.end(),my_sort());//对顺序表进行自定义排序,使用仿函数
  PrintContainers(v1);

  
  vector<int>::iterator pos=find(v1.begin(),v1.end(),1);//返回在容器中元素值为1的迭代器
  cout<<"在1之前插入7"<<endl;
  v1.insert(pos,7);
  PrintContainers(v1);
}


void list_test()  //对列表进行相关的测试
{
  list<string> L;
  L.push_back("a");
  L.push_back("b");
  L.push_back("c");
  L.push_back("d");
  L.push_back("e");
  L.push_back("f");
  
  PrintContainers(L);//顺序打印列表L

  ReversePrintContainers(L);//反向打印列表L

  list<string>::iterator pos2=find(L.begin(),L.end(),"b");
  printf("在元素b之前插入gg\n");
  L.insert(pos2,"gg");
  PrintContainers(L);
}



int main()
{
  vector_test();
  list_test();
  system("pause");
  return 0;
}


本例子使用模板函数使用迭代器遍历容器(vector,list,)

使用sort函数进行排序;自定义my_sort()函数,使用仿函数进行逆向排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值