algorithm 不修改序列的操作

2023-10-27

非修正序列算法

非修正序列算法不修改他们所作用的容器,例如计算元素个数和查找元素的函数。

函数 算法
adjacent_find(first, last) 搜索相邻的重复元素
count(first, last, val) 计数
equal(first, last, first2) 判断是否相等
find(first, last, val) 搜索
find_end(first, last, first2, last2) 搜索某个子序列的最后一次出现地点
find_first(first, last, first2, last2) 搜索某些元素的首次出现地点
for_each(first, last, func) 对 first 到 last 范围内的各个元素执行函数 func 定义的操作
mismatch(first, last, first2) 找出不吻合点
search(first, last, first2, last2) 搜索某个子序列

adjacent_find(first, last)

返回一个迭代器,指向第一对同值元素对的第一个元素。函数在迭代器 first 和 last 指明的范围内查找。此函数还有一个谓词版本,其第 3 个实参是一个比较函数。

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

void Test_adjacent_find()
{
	multiset<int> int_set;
	int_set.insert(7);
	int_set.insert(5);
	int_set.insert(1);
	int_set.insert(5);
	int_set.insert(7);
    cout << "Set:";
	for (int item : int_set) cout << item << endl;

	cout << "第一次匹配 ";
	multiset<int>::iterator it = adjacent_find(int_set.begin(), int_set.end());
	if (it == int_set.end())
	{
		cout << "没有相邻的重复元素1" << endl;
		return;
	}
	cout << *it++ << ' ' << *it << endl;	// it++ 先打印第一个元素,再更新迭代器

	cout << "第二次匹配 ";
	it = adjacent_find(it, int_set.end());
	if (it == int_set.end())
	{
		cout << "没有相邻的重复元素2" << endl;
		return;
	}
	cout << *it++ << ' ' << *it << endl;
}
Output
Set:1 5 5 7 7
第一次匹配 5 5
第二次匹配 7 7

count(first, last, val)

返回容器中值为 val 的元素个数。函数在迭代器 first 和 last 指明的范围内查找。

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

void Test_count()
{
	multiset<int> int_set;
	int_set.insert(1);
	int_set.insert(5);
	int_set.insert(6);
	int_set.insert(2);
	int_set.insert(5);
	int_set.insert(3);
	int_set.insert(7);
	int_set.insert(5);
	cout << "Set:";
	for (int item : int_set) cout << item << endl;

	int num_count = count(int_set.begin(), int_set.end(), 5);
	cout << "元素5数量:" << num_count << endl;
}
Output
Set:1 2 3 5 5 5 6 7
元素5数量:3

for_each(first, last, func)

对 first 到 last 范围内的各个元素执行函数 func 定义的操作。

#include <iostream>
#include <algorithm>
#include <set>

using namespace std;

// 输出函数
void Output(int val)
{
	cout << val << ' ';
}

void Test_for_each()
{
	set<int> int_set;
	int_set.insert(2);
	int_set.insert(3);
	int_set.insert(1);

	cout << "Set:";
	for_each(int_set.begin(), int_set.end(), Output);
	cout << endl;
}
Output
Set:1 2 3

相关参考

微软文档(algorithm)

cppreference(algorithm)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

algorithm 不修改序列的操作 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如果找不到指定的图像文件,显示默认图像的最佳方式?

    我有一个普通的电子商务应用程序 我将 ITEM IMAGE NAME 存储在数据库中 有时经理会拼错图像名称 为了避免 丢失图像 IE 中的红色 X 每次显示产品列表时 我都会检查服务器中是否有与该产品相关的图像 如果该文件不存在 我会将其
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内

随机推荐

  • 伪代码书写规范

    伪代码 Pseudocode 是一种算法描述语言 使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言 Pascal C Java etc 实现 因此 伪代码必须结构清晰 代码简单 可读性好 并且类似自然语言 介于自然语言与编程
  • matlab lpc求共振峰频率,用Python中的LPC估计共振峰

    我对信号处理还不太熟悉 关于这一点 numpy scipy和matlab 我试着用Python中的LPC来估计元音共振峰 方法是修改下面的matlab代码 这是我目前的代码 usr bin env python import sys imp
  • vs+opencv环境配置出现程序无法启动及提示无法打开opencv_world400d.lib问题的解决方法

    vs opencv 1配置完成但是频频出错 1问题描述 无法启动程序 系统找不到指定的文件 我的原图忘记保存 故找了一张类似问题的图片做代替描述问题 在出现上述问题之后 点击确定后 程序报错 错误如下图 2解决方法 我已按照网上教程配置环境
  • springboot多数据源配置并解决多数据源下出现Cannot determine embedded database driver class for database type NONE的问题

    被多数据源折腾晕了 为了让自己记住写下这篇博客 第一步 配置 application properties server port 8081 server session timeout 1000000 server context pat
  • Web前端——用CSS的常用样式制作一个炫酷的按钮

    文章目录 笔记 CSS的常用样式 炫酷按钮效果实现 笔记 CSS的常用样式 边框以及弧度样式 border width 边框的线条宽度 border style 边框的样式 例如 solid实现 dotted 点线 dashed 虚线 bo
  • @Async 异步调用

    package com example demo controller import com example demo service AsyncService import org springframework http Respons
  • c:\Windows\System32\drivers\etc\hosts

    c Windows System32 drivers etc hosts 是域名解析文件 可以直接用记事本打开 将IP地址重定向 格式为 ip地址 空格 域名 可以将一个域名重新定向到一个IP Hosts文件配置的映射是静态的 如果网络上的
  • NVIDIA GPU驱动和CUDA工具包 Linux CentOS 7 在线安装指南

    挑选指定系统和对应的GPU型号下载驱动和CUDA工具包 Linux CentOS安装NVIDIA GPU驱动程序和NVIDIA CUDA工具包 centos安装显卡驱动和cuda Entropy Go的博客 CSDN博客 相比之下 本文是在
  • cron表达式插件 qnn-react-cron

    eslint disable react no unstable nested components import React from react import Cron from qnn react cron import Button
  • 渗透测试流程——渗透测试的9个步骤(转)

    渗透测试的流程 1 明确目标 2 分析风险 获得授权 3 信息收集 4 漏洞探测 手动 自动 5 漏洞验证 6 信息分析 7 利用漏洞 获取数据 8 信息整理 9 形成报告 1 明确目标 1 确定范围 测试的范围 如 IP 域名 内外网 整
  • 绕过图片格式限制上传木马获取WebShell

    思路 图片上传功能中 前端页面上传的是 png格式的图片文件 但是抓包Request中修改图片后缀为 php 可以绕过对上传文件格式的限制 文件的上传路径可以在上传后的页面或查看上传成功后的response中有显示 记录下来后用菜刀连接即可
  • ApplicationContext.log 将servlet[XXX]标记为不可用 问题已解决!!!

    期间我清楚Maven重新构建项目 手动在 lib 文件中添加 servlet api 等相关jar包无果 最终我尝试着把Tomcat从 10 0 6 版本降低到 9 0 46 版本 更改环境变量重新运行 竟然好了 也许是 Tomcat 版本
  • mac下通过终端安装python3问题记录及解决

    安装python时 首先想到的是升级电脑里的python版本 可是上网搜索后发现升级可能会使用一些基于python的应用运行有问题 所以就尝试安装两个版本 一 查看当前的python版本 打开终端 输入命令python V 二 安装Xcod
  • C语言——可执行程序过程

    我们在编写代码的时候 不知道大家是否和一开始的我一样 在运行代码的时候就直接CTRL F5运行了呢 一开始 我只知道会生成一个 exe的可执行文件 中间的原理我一点也不知道 今天就由我带领大家对生成可执行的文件有更深的一层理解 程序的翻译环
  • 安装Ubuntu系统详细教程

    一 前言 本篇文章详解介绍一下如何安装Ubuntu系统 笔者在安装的过程中踩过很多坑 重装了很多次 现在把安装过程中遇到的问题也列出来 供大家参考 二 准备工作 这个环节很重要 工欲善其事 必先利其器 2 1 固态硬盘 如果是做系统源码开发
  • Android GB28181设备接入端语音广播和语音对讲技术实现探究

    上篇文章提到Android端GB28181接入端的语音广播和语音对讲的实现 从spec角度大概介绍了下流程和简单的接口设计 好多开发者私信我 希望展开说一下 其实这块难度不大 只是广播和对讲涉及到双向实现 如果之前没有相关的积累 从头实现麻
  • gitlab常用操作总结

    1 常用命令 1 git clone xx git 首先从git项目xx gitclone项目到本地 2 clone之后 使用命令行项目进入项目所在文件夹 此时一般在master分支下 为了不影响主分支代码 进行新建分支 git check
  • 40个大数据学习资源,个个是干货,最后7个太给力

    数据是驱动商业向前发展的核心 更是人类社会的未来 尽管将马云的这句话断章取义地拿出来说会显得唐突 但这话所表达的意思却显而易见 今天给大家分享的这40个教程 送给对未来抱有远见的乐观主义者 涵盖了大数据入门的大多基础知识 从Java基础到S
  • 沉浸式翻译 安装及使用

    介绍一下最近非常或的沉浸式翻译工具 非常有助于外文阅读 包括网页 pdf等 可以同时显示原文和译文 操作简单 使用起来还是非常友好的 先上链接 介绍 沉浸式翻译 如何使用 沉浸式翻译 1 安装 支持Edge Chrome Firefox和S
  • algorithm 不修改序列的操作

    文章目录 非修正序列算法 adjacent find first last count first last val for each first last func 相关参考 非修正序列算法 非修正序列算法不修改他们所作用的容器 例如计算