C++ 的常见算法 之一
C++ 的常见算法 之一
- 不修改序列算法
- for_each
- count
- find
- 修改序列算法
- copy
- move
不修改序列算法
for_each
#include <iostream> // std::cout
#include <algorithm> // std::for_each
#include <vector> // std::vectorusing namespace std;struct packet {int id;int sz;
};void myfunction(int i) { // function:cout << ' ' << i;
}void print_packet(packet pkt) {cout << pkt.id << " Size:" << pkt.sz << endl;
}struct myclass { // function object type:void operator() (int i) { std::cout << ' ' << i; }
} myobject;int for_each_algo() {vector<int> myvector;vector<packet> ptks = {{0x700, 50},{0x701, 90},{0x702, 1000} };myvector.push_back(10);myvector.push_back(20);myvector.push_back(30);cout << "myvector contains:";for_each(myvector.begin(), myvector.end(), myfunction);cout << '\n';// or:std::cout << "myvector contains:";for_each(myvector.begin(), myvector.end(), myobject);std::cout << '\n';cout << "myvector contains:";for_each(ptks.begin(), ptks.end(), print_packet);cout << '\n';return 0;
}
count
#include <iostream>
#include <algorithm>
#include <vector> using namespace std;struct addr {string street_addr;string city;string postcode;bool operator==(const addr& addr1) {if (postcode != addr1.postcode)return 0;return 1;}
};int main () {// counting elements in array:int myints[] = { 10,20,30,30,20,10,10,20 }; // 8 elementsint mycount = std::count(myints, myints + 8, 10);cout << "10 appears " << mycount << " times.\n";// counting elements in container:vector<int> myvector(myints, myints + 8);mycount = std::count(myvector.begin(), myvector.end(), 20);cout << "20 appears " << mycount << " times.\n";vector<addr> addrs = {{"1024 merivale Rd", "ottawa", "K1Z 6A5"},{"1025 merivale Rd", "ottawa", "K1Z 6A5"},{"335 blossom rd", "san jose", "95123"},{"5970 lean st", "san jose", "95123"},{"5821 falon way", "san jose", "95123"},};addr myaddr = { "", "", "95123" };mycount = count(addrs.begin(), addrs.end(), myaddr);cout << "95123 appears " << mycount << " times.\n";addr myaddr2 = { "", "", "K1Z 6A5" };mycount = count(addrs.begin(), addrs.end(), myaddr2);cout << "95123 appears " << mycount << " times.\n";return 0;
}
find
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;struct addr {string street_addr;string city;string postcode;int operator==(const addr& addr1) { if (street_addr != addr1.street_addr)return 0;if (city != addr1.city)return 0;if (postcode != addr1.postcode)return 0;return 1;}
};int main() {// using std::find with array and pointer:int myints[] = { 10, 20, 30, 40 };int* p;p = find(myints, myints + 4, 30);if (p != myints + 4)cout << "Element found in myints: " << *p << '\n';elsecout << "Element not found in myints\n";// using std::find with vector and iterator:vector<int> myvector(myints, myints + 4);vector<int>::iterator it;it = find(myvector.begin(), myvector.end(), 30);if (it != myvector.end())cout << "Element found in myvector: " << *it << '\n';elsecout << "Element not found in myvector\n";vector<addr> addrs = {{"1024 merivale Rd", "ottawa", "K1Z 6A5"},{"1025 merivale Rd", "ottawa", "K1Z 6A5"},};vector<addr>::iterator it_addr;addr myaddr = { "1024 merivale Rd", "ottawa", "K1Z 6A6" };it_addr = find(addrs.begin(), addrs.end(), myaddr);if (it_addr != addrs.end()) {cout << "Address: " << it_addr->street_addr << '\n';cout << "City: " << it_addr->city << '\n';cout << "Post Code: " << it_addr->postcode << '\n';}elsecout << "Address not found in addrs\n";return 0;
}
修改序列算法
copy
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;void print_val(int v) {cout << " " << v;
};int copy_algo() {int myints[] = { 10,20,30,40,50,60,70 };vector<int> myvector(7);copy(myints, myints + 7, myvector.begin());std::cout << "myvector contains:";for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';cout << "for_each: myvector contains:";for_each(myvector.begin(), myvector.end(), print_val);cout << endl;return 0;
}
move
#include <iostream>
#include <algorithm>
#include <utility>
#include <vector>
#include <string> using namespace std;int main() {vector<string> foo = { "air","water","fire","earth" };vector<string> bar(4);// moving ranges:cout << "Moving ranges...\n";move(foo.begin(), foo.begin() + 4, bar.begin());cout << "foo contains " << foo.size() << " elements:";cout << " (each in an unspecified but valid state)";cout << '\n';cout << "bar contains " << bar.size() << " elements:";for (auto x : bar) cout << " [" << x << "]";cout << '\n';// moving container:cout << "Moving container...\n";foo = move(bar);cout << "foo contains " << foo.size() << " elements:";for (auto x : foo) cout << " [" << x << "]";cout << '\n';cout << "bar is in an unspecified but valid state";cout << '\n';return 0;
}
相关文章:
C++ 的常见算法 之一
C 的常见算法 之一 不修改序列算法for_eachcountfind 修改序列算法copymove 不修改序列算法 for_each #include <iostream> // std::cout #include <algorithm> // std::for_each #include <vector> // std::vectorusing namespace std;struc…...
微前端的需求有哪些?微前端的原理是怎么样的?为什么这么设计,及微前端的应用场景是什么?对有些客户,前端的重要性高于后端
微前端(Micro Frontends)是将前端应用拆分成多个独立、可部署的部分,每个部分可以由不同的团队独立开发、测试、部署和维护。这种架构类似于微服务在后端的应用,是为了应对复杂前端应用的维护和扩展问题而提出的。 来龙去脉 背景…...

【Spring Boot】统一数据返回
目录 统一数据返回一. 概念二.实现统一数据返回2.1 重写responseAdvice方法2.2 重写beforeBodyWriter方法 三. 特殊类型-String的处理四. 全部代码 统一数据返回 一. 概念 其实统一数据返回是运用了AOP(对某一类事情的集中处理)的思维,简单…...

证券交易系统中服务器监控系统功能设计
1.背景介绍 此服务器监控系统的目的在于提高行情服务器的监管效率,因目前的的行情服务器,包括DM、DT、DS配置数量较多,巡回维护耗时较多,当行情服务器出现异常故障,或者因为网络问题造成数据断线等情况时,监…...

【线性代数的本质】矩阵与线性变换
线性变化要满足两点性质: 直线(连续的点)在变换后还是直线。原点不变。 假设有坐标轴(基底) i ^ \widehat{i} i 和 j ^ \widehat{j} j : i ^ [ 1 0 ] , j ^ [ 0 1 ] \widehat{i}\begin{bmatrix} 1 \…...

CV02_超强数据集:MSCOCO数据集的简单介绍
1.1 简介 MSCOCO数据集,全称为Microsoft Common Objects in Context,是由微软公司在2014年推出并维护的一个大规模的图像数据集,旨在推动计算机视觉领域的研究,尤其是目标识别、目标检测、实例分割、图像描述生成等任务。该数据集…...

Linux--信号(万字详解!超完整!)
目录 0.预备知识 0.1.基本概念 0.2.信号的捕捉 0.3.理解信号的发送与保存 1.信号的产生(阶段一) 1.通过kill命令,向指定进程发送指定的信号 2.通过终端按键产生信号:ctrlc(信号2),ctrl\(…...

onnx模型转rknn到部署
简介 最近开始用3568的板子,之前是在用3399,cpu的话3399比3568强,但是3568有1T的npu算力,所以模型移植过来用npu使用,之前用ncnn感觉太慢了,rk的npu使用没有开源,所以没法兼容,只能跑…...

lua入门(1) - 基本语法
本文参考自: Lua 基本语法 | 菜鸟教程 (runoob.com) 需要更加详细了解的还请参看lua 上方链接 交互式编程 Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。 Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用: 如下图: 按…...

Finding Global Homophily in Graph Neural Networks When Meeting Heterophily
本文发表于:ICML22 推荐指数: #paper/⭐⭐⭐ 问题背景: 异配图的邻接矩阵难以确定,以及异配图的计算复杂度开销大 可行的解决办法:高通滤波多跳邻居,GPRGNN(pagerank一类,各阶邻居的权重不同,ACM-GCN(高低通滤波,H2GCN(应该复杂度很大&…...

DisFormer:提高视觉动态预测的准确性和泛化能力
最新的研究进展已经显示出目标中心的表示方法在视觉动态预测任务中可以显著提升预测精度,并且增加模型的可解释性。这种表示方法通过将视觉场景分解为独立的对象,有助于模型更好地理解和预测场景中的变化。 尽管在静态图像的解耦表示学习方面已经取得了一…...
Android SurfaceFlinger——Surface和Layer介绍(十九)
按照前面系统开机动画的流程继续分析,在获取到显示屏信息后,下一步就是开始创建 Surface和设置 Layer 层级,这里就出现了两个新的概念——Surface 和 Layer。 一、基本概念 1、Surface介绍 在 Android 系统中,Surface 是一个非常核心的概念,它是用于显示图像的生产者-消…...

C++基础(七):类和对象(中-2)
上一篇博客学的默认成员函数是类和对象的最重要的内容,相信大家已经掌握了吧,这一篇博客接着继续剩下的内容,加油! 目录 一、const成员(理解) 1.0 引入 1.1 概念 1.2 总结 1.2.1 对象调用成员函数 …...

对秒杀的思考
一、秒杀的目的 特价商品,数量有限,先到先得,售完为止 二、优惠券的秒杀 和特价商品的秒杀是一样的,只不过秒杀的商品是优惠券 三、秒杀的需求 秒杀前:提前将秒杀商品,存放到Redis秒杀中:使…...

数据结构预科
在堆区申请两个长度为32的空间,实现两个字符串的比较【非库函数实现】 要求: 1> 定义函数,在对区申请空间,两个申请,主函数需要调用2次 2> 定义函数,实现字符串的输入,void input(char …...

想做亚马逊测评技术需要解决哪些问题,有哪些收益?
现在真正有亚马逊测评技术的人赚的盆满钵满,有些人看到别人赚取就自己盲目去做,买完了账号和设备就感觉自己懂了,却不知里面的水深着,花了钱却没有掌握真正的技术,号莫名其妙就封完了,而每一次大风控注定要…...

1117 数字之王
solution 判断现有数字是否全为个位数 全为个位数,找出出现次数最多的数字,并首行输出最多出现次数,第二行输出所有出现该次数的数值不全为个位数 若当前位数值为0,无需处理若当前位数值非0,则每位立方相乘࿰…...

关于ORACLE单例数据库中的logfile的切换、删除以及添加
一、有关logfile的状态解释 UNUSED: 尚未记录change的空白group(一般会出现在loggroup刚刚被添加,或者刚刚使用了reset logs打开数据库,或者使用clear logfile后) CURRENT: 当前正在被LGWR使用的gro…...

Linux高并发服务器开发(十三)Web服务器开发
文章目录 1 使用的知识点2 http请求get 和 post的区别 3 整体功能介绍4 基于epoll的web服务器开发流程5 服务器代码6 libevent版本的本地web服务器 1 使用的知识点 2 http请求 get 和 post的区别 http协议请求报文格式: 1 请求行 GET /test.txt HTTP/1.1 2 请求行 健值对 3 空…...

人工智能系列-NumPy(二)
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 链接数组 anp.array([[1,2],[3,4]]) print(第一个数组:) print(a) print(\n) bnp.array([[5,6],[7,8]]) print(第二个数组:) print(b) print(\n) print…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...