【C++常用算法】STL基础语法学习 | 算数生成算法&集合算法

简介: 计算容器内元素累计总和

●accumulate


1.功能描述:


       计算容器内元素累计总和


2.查看accumulate定义下底层代码的函数原型:

4ef327ab50ff27d3c718f62292c19c59_074f267aa0d54190b43a0156189634a0.png

3.向vector容器中插入0~100,使用accumulate算法去计算其和并输出

#include<iostream>
#include<vector>
#include<numeric>   //算数生成算法的头文件
using namespace std;
void text()
{
  vector<int>v;
  for (int i = 0; i <= 100; i++)
  {
  v.push_back(i);
  }
  int sum=accumulate(v.begin(), v.end(), 0);
  cout << "sum=" << sum << endl;
}
int main()
{
  text();
}

88f12f2903210c786257eaef7b1e99ea_a6e4a00a225e4aa28b3705de7b44c622.png

●fill


1.功能描述:


       向容器内填充指定的元素值


2.查看fill定义下底层代码的函数原型:

74df7447d90705eeb80e5e0826534199_487e3c84c20e4c9a999fb969489f0778.png

3.创建一个vector容器,给其重新规定5个空间大小,向其里面填充10并且输出

#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric> //算数生成算法的头文件
using namespace std;
void printvector(int value)
{
  cout << value << " ";
}
void text()
{
  vector<int>v;
  v.resize(5);
  fill(v.begin(), v.end(), 10);
  for_each(v.begin(),v.end(),printvector);
}
int main()
{
  text();
}

4813bd8246ddf440b99c9c046b9ec208_bb922363178b4fc7a91870a66318f64f.png

●set_intersection


1.功能描述:


       求两个容器的交集(有序序列)


2.查看set_intersection定义下底层代码的函数原型:

3c8ae6ecb3db517365745eefbb748421_be7455b857314095892a9c8be836c84e.png

3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_intersection去求两容器的交集到指定容器中并且输出

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
  cout << value << " ";
}
void text()
{
  vector<int>v1;
  vector<int>v2;
  for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
  {
  v1.push_back(j);
  v2.push_back(k);
  }
  //创建目标容器
  vector<int>v;
  //给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器的最小值)
  v.resize(min(v1.size(), v2.size()));
  //求交集
  vector<int>::iterator p_end;   //用迭代器去接受最后一个交集元素,在遍历输出时使用
  p_end=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
  for_each(v.begin(),p_end,printvector);
} 
int main()
{
  text();
}

3414f123555c96c84f1750cab747e5f9_4fe65557c55940e0bc9f6c13861e122a.png

●set_union


1.功能描述:


       求两集合的并集(有序序列)


2.查看set_union定义下底层代码的函数原型:


4f5d8aaca4380d4e97ff77522a0671ff_f5a0accf90384e82bdb1151c7ead5618.png


3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_union去求两容器的并集到指定容器中并且输出

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
  cout << value << " ";
}
void text()
{
  vector<int>v1;
  vector<int>v2;
  for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
  {
  v1.push_back(j);
  v2.push_back(k);
  }
  //创建目标容器
  vector<int>v;
  //给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器空间的加和)
  v.resize(v1.size()+v2.size());
  //求并集
  vector<int>::iterator p_end;   //用迭代器去接受最后一个并集元素,在遍历输出时使用
  p_end=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v.begin());
  for_each(v.begin(),p_end,printvector);
} 
int main()
{
  text();
}

1b66d42f97453df66403c08c221efbb1_e25b00692e6e4380832f8941c55810c8.png

●set_difference


1.功能描述:


       求两个集合的差集


2.查看set_difference定义下底层代码的函数原型:

db1feb93dc846f824732e5b0326f9f8d_4d9cf920c8ea4a86b60673f62f644362.png

3.创建容器1和容器2,分别向容器中插入1~10和5~14,使用set_difference去分别求两容器v1-v2和v2-v1的差集到指定容器中并且输出


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printvector(int value)
{
  cout << value << " ";
}
void text()
{
  vector<int>v1;
  vector<int>v2;
  for (int i = 1, j = 1, k = 5; i <= 10; i++, j++, k++)
  {
  v1.push_back(j);
  v2.push_back(k);
  }
  cout << "容器1差集容器2:" << endl;
  vector<int>v_;//创建目标容器
  v_.resize(max(v1.size(),v2.size()));//给目标容器开辟空间(一种特殊情况,开辟空间为两集合容器的最大值)
  vector<int>::iterator p_end_1;   //,求差集用迭代器去接受最后一个差集元素,在遍历输出时使用
  p_end_1=set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v_.begin()); //v1-v2
  for_each(v_.begin(),p_end_1,printvector);
  cout << endl;
  cout << "容器2差集容器1:" << endl;
  vector<int>v__;
  v__.resize(max(v1.size(), v2.size()));
  vector<int>::iterator p_end_2;
  p_end_2 = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), v__.begin()); //v2-v1
  for_each(v__.begin(), p_end_2, printvector);
} 
int main()
{
  text();
}

5919949125ebe8cc095dcbcb54454d0c_339da775600f4c1892513cb88ad458b8.png

目录
相关文章
|
5月前
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
109 2
|
6月前
|
存储 算法 C++
Windows共享文件:探秘C++实现的B树索引算法奇境
在数字化时代,Windows共享文件的高效管理至关重要。B树算法以其自平衡多路搜索特性,在文件索引与存储优化中表现出色。本文探讨B树在Windows共享文件中的应用,通过C++实现具体代码,展示其构建文件索引、优化数据存储的能力,提升文件检索效率。B树通过减少磁盘I/O操作,确保查询高效,为企业和个人提供流畅的文件共享体验。
|
7月前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
180 15
|
7月前
|
运维 监控 算法
解读 C++ 助力的局域网监控电脑网络连接算法
本文探讨了使用C++语言实现局域网监控电脑中网络连接监控的算法。通过将局域网的拓扑结构建模为图(Graph)数据结构,每台电脑作为顶点,网络连接作为边,可高效管理与监控动态变化的网络连接。文章展示了基于深度优先搜索(DFS)的连通性检测算法,用于判断两节点间是否存在路径,助力故障排查与流量优化。C++的高效性能结合图算法,为保障网络秩序与信息安全提供了坚实基础,未来可进一步优化以应对无线网络等新挑战。
|
7月前
|
存储 算法 数据处理
公司局域网管理中的哈希表查找优化 C++ 算法探究
在数字化办公环境中,公司局域网管理至关重要。哈希表作为一种高效的数据结构,通过哈希函数将关键值(如IP地址、账号)映射到数组索引,实现快速的插入、删除与查找操作。例如,在员工登录验证和设备信息管理中,哈希表能显著提升效率,避免传统线性查找的低效问题。本文以C++为例,展示了哈希表在局域网管理中的具体应用,包括设备MAC地址与IP分配的存储与查询,并探讨了优化哈希函数和扩容策略,确保网络管理高效准确。
|
3月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
83 0
|
4月前
|
存储 机器学习/深度学习 算法
基于 C++ 的局域网访问控制列表(ACL)实现及局域网限制上网软件算法研究
本文探讨局域网限制上网软件中访问控制列表(ACL)的应用,分析其通过规则匹配管理网络资源访问的核心机制。基于C++实现ACL算法原型,展示其灵活性与安全性。文中强调ACL在企业与教育场景下的重要作用,并提出性能优化及结合机器学习等未来研究方向。
100 4
|
5月前
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
145 17
|
4月前
|
机器学习/深度学习 存储 算法
基于 C++ 布隆过滤器算法的局域网上网行为控制:URL 访问过滤的高效实现研究
本文探讨了一种基于布隆过滤器的局域网上网行为控制方法,旨在解决传统黑白名单机制在处理海量URL数据时存储与查询效率低的问题。通过C++实现URL访问过滤功能,实验表明该方法可将内存占用降至传统方案的八分之一,查询速度提升约40%,假阳性率可控。研究为优化企业网络管理提供了新思路,并提出结合机器学习、改进哈希函数及分布式协同等未来优化方向。
91 0
|
7月前
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法

热门文章

最新文章