迭代器与仿函数

简介: 迭代器与仿函数

一般分类

  1. 正向迭代器
    容器名:iterator it
    begin()
    end()

2.反向迭代器

容器名:reverse_iterator it

rbegin()

rend()

3.常正向迭代器

容器名:const_iterator it

cbegin()

cend()

4.常反向迭代器

容器名:const_reverse_iterator it

crbegin()

crend()\

注意:

begin()可以表示第一个元素

end()不能够表示最后一个元素

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
  vector<int> i = { 1, 2, 4, 2, 4, 5 };
  //4种迭代器
  vector<int> ::iterator it = i.begin();
  vector<int> ::reverse_iterator rit;
  vector<int> ::const_iterator cit;
  vector<int> ::const_reverse_iterator crit;
  system("pause");
  return 0;
}

功能方式分类

1.正向迭代器

2.双向迭代器

3.随机访问迭代器

STL迭代器的类型

迭代器辅助函数

distacne(第一个参数,第二个参数)计算迭代器中2个参数的位置

iter_swap(iterator first, iterator second)

交换迭代器中的两个元素

流型迭代器

输出流型迭代器

ostream_iterator

istream_iterator

ostream_iterator<类型> 对象(参数);

对象 = 值;

也就相当于 cout << 值;

#include<iostream>
using namespace std;
int main()
{
  //输出流迭代器
  ostream_iterator<int> coutiterator(cout);
  coutiterator = 1999;
  //cout << 1999;
  system("pause");
  return 0;
}

流迭代器,通常结合copy函数一起使用

copy(),有三个参数,作用就是将值赋值到另一个上

第一个参数和第二个参数,表示值的范围,第三个参数表示赋值对象的位置。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
  输出流迭代器
  //ostream_iterator<int> coutiterator(cout);
  //coutiterator = 1999;
  cout << 1999;
  //分开写
  vector<int> it = { 1, 3, 4, 3, 2, 6, 3, 7, 3 };
  ostream_iterator<int> coutiterator(cout);
  cout << endl;
  //合着写
  copy(it.begin(), it.end(), coutiterator);
  copy(it.begin(), it.end(), ostream_iterator<int>(cout));
copy(it.begin(), it.end(), ostream_iterator<int>(cout, " "));
//每个数据,都有隔开
  system("pause");
  return 0;
}

输入流迭代器

istream_iterator<类型> EOS; //输入的与要求的不一样,错误流

istream_iterator<类型> object1;

*object1;(等效于cin操作)

#include<iostream>
#include<vector>
using namespace std;
int main()
{
  cout << "输入整形数据" << endl;
  vector<int> date;
  istream_iterator<int> EOS;
  istream_iterator<int> ciniterator(cin);
  while (ciniterator != EOS)
  {
    date.push_back(*ciniterator);
    ++ciniterator;
  }
  for (auto& v : date)
  {
    cout << v << endl;;
  }
  return 0;
}


如果所示:

用这种方法好处在于:输入一些不是要求的数据类型,程序不会像cin一样崩溃,而是会结束程序

并且,也只会打印要求的数据类型。

仿函数

仿函数:是让类名模仿函数调用的行为(函数调用:函数(函数参数))

仿函数:类名(参数)使用

1.仿函数实质上是()运算符的重载

2.仿函数一般是作为排序准则,或者比较准则

仿函数的编写

一般情况下都需要用const来修饰

#include<iostream>
using namespace std;
class sum
{
public:
  int operator() (const int& a, const int& b) const
  {
    return a + b;
  }
};
int main()
{
  sum mm;
  cout << mm(1, 32) << endl;  //隐式调用
  cout << mm.operator()(1, 34) << endl; //显示调用
}

标准库中的仿函数

使用标准库里的仿函数必须要包含头文件functional

求和plus,求减minus

使用方法:

函数<类型> ()(参数)

#include<iostream>
#include<functional>
#include<set>
using namespace std;
int main()
{
  cout << plus<int>()(1, 3) << endl;//加
  cout << minus<int>()(3, 1) << endl;//减
  set<int, greater<int>> date = { 1, 4, 3, 1, 0, 8, 0};
  copy(date.begin(), date.end(),ostream_iterator<int>(cout));
}

set ,map, priority_queue算法 sort

greater >

less <

less_qual <=

not_equal_to !=

equal_to ==

当然还有用仿函数写比较准则

这在前面set,map都讲过,这里就不在写了





相关文章
|
8天前
|
JSON API 数据格式
OpenCode入门使用教程
本教程介绍如何通过安装OpenCode并配置Canopy Wave API来使用开源模型。首先全局安装OpenCode,然后设置API密钥并创建配置文件,最后在控制台中连接模型并开始交互。
3702 8
|
4天前
|
人工智能 API 开发者
Claude Code 国内保姆级使用指南:实测 GLM-4.7 与 Claude Opus 4.5 全方案解
Claude Code是Anthropic推出的编程AI代理工具。2026年国内开发者可通过配置`ANTHROPIC_BASE_URL`实现本地化接入:①极速平替——用Qwen Code v0.5.0或GLM-4.7,毫秒响应,适合日常编码;②满血原版——经灵芽API中转调用Claude Opus 4.5,胜任复杂架构与深度推理。
|
14天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
16天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
2377 18
|
8天前
|
人工智能 前端开发 Docker
Huobao Drama 开源短剧生成平台:从剧本到视频
Huobao Drama 是一个基于 Go + Vue3 的开源 AI 短剧自动化生成平台,支持剧本解析、角色与分镜生成、图生视频及剪辑合成,覆盖短剧生产全链路。内置角色管理、分镜设计、视频合成、任务追踪等功能,支持本地部署与多模型接入(如 OpenAI、Ollama、火山等),搭配 FFmpeg 实现高效视频处理,适用于短剧工作流验证与自建 AI 创作后台。
1237 5
|
7天前
|
人工智能 运维 前端开发
Claude Code 30k+ star官方插件,小白也能写专业级代码
Superpowers是Claude Code官方插件,由核心开发者Jesse打造,上线3个月获3万star。它集成brainstorming、TDD、系统化调试等专业开发流程,让AI写代码更规范高效。开源免费,安装简单,实测显著提升开发质量与效率,值得开发者尝试。
|
3天前
|
人工智能 前端开发 安全
Claude Code这周这波更新有点猛,一次性给你讲清楚
Claude Code 2.1.19重磅更新:7天连发8版!npm安装已弃用,全面转向更安全稳定的原生安装(brew/curl/WinGet等)。新增bash历史补全、自定义快捷键、任务依赖追踪、搜索过滤等功能,并修复内存泄漏、崩溃及多项安全漏洞。老用户建议尽快迁移。
|
18天前
|
人工智能 测试技术 开发者
AI Coding后端开发实战:解锁AI辅助编程新范式
本文系统阐述了AI时代开发者如何高效协作AI Coding工具,强调破除认知误区、构建个人上下文管理体系,并精准判断AI输出质量。通过实战流程与案例,助力开发者实现从编码到架构思维的跃迁,成为人机协同的“超级开发者”。
1386 106