当前位置: 首页 > news >正文

C++:STL架构图

STL架构图

  • 1:仿函数
  • 2:算法

架构图
在这里插入图片描述

算法库
在这里插入图片描述
再看一下这个实例

#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>
using namespace std;int main()
{int i[6] = {1,2,3,4,5,6};vector<int,allocator<int>> vec (i,i+6);for (auto& elem : vec){std::cout << elem << " ";}cout <<endl;// 相当于x<6是否成立,用于判定那些小于6的元素cout<< "there are " << count_if(vec.begin(),vec.end(),bind2nd(less<int>(), 6)) << " elements that are less than 6" <<endl;// 相当于3<x是否成立,用于判定那些大于3的元素cout << "there are " << count_if(vec.begin(),vec.end(),bind1st(less<int>(), 3)) << " elements that are not less than 3" << endl;return 0;
}

在这里插入图片描述

  • vector 通过数组构建,container的使用
  • allocator 是容器构建中使用的分配器
  • count_if 是算法一种,符合if 条件则计数
  • vec.begin(),vec.end()调用的是迭代器
  • bind1st,bind2nd 是一种 function adapter
  • less() 获取一个 function object (仿函数)

容器的基础
容器中的元素在 [ c.begin(), c.end()) 之间,当迭代器遍历到 c.end()时候,实际已经脱离了容器的元素区间。
在这里插入图片描述
基本遍历
使用for 循环进行遍历

std::vector<double> vec;
for (auto& elem : vec){std::cout << elem << std::endl;
}

1:仿函数

🚀定义
所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。因此,这里需要明确两点:

  1. 仿函数不是函数,它是个类;
  2. 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。

2:算法

STL算法特征
🚀🚀🚀

  1. STL算法本身是一种函数模版
  2. 通过迭代器获得输入数据
  3. 通过函数对象对数据进行处理
  4. 通过迭代器将结果输出
  5. STL算法是通用的,独立于具体的数据类型、容器类型。
http://www.lryc.cn/news/44512.html

相关文章:

  • [Ubuntu][网络][教程]端口转发以及端口管理
  • @Scheduled 定时任务不执行
  • 我是怎样被卷的(二)
  • Linux- 浅谈ELF目标文件格式
  • C++ MVC模式
  • IntelliJ IDEA2021安装教程
  • day16—选择题
  • LLVM 的中间代码(IR) 基本语法
  • 多标签在单行出现省略的实现
  • 第二十七章 纹理总结
  • 【Linux面试】-(腾讯,百度,美团,滴滴)
  • 编译链接和预处理
  • 基于sprinmgboot实现实习管理系统的设计【源码+论文】
  • 动态规划入门
  • day26 SpringBootWeb案例(二)
  • 力扣-《剑指offer》-哈希表-刷题笔记
  • 【SpringBoot】| 邮箱发送验证码,你会了吗?
  • Linux系统安装部署及配置Grafana
  • Python3 入门教程||Python3 输入和输出||Python3 File 方法
  • 有效的字母异位词(力扣刷题)
  • 73、介绍下 HashMap 的底层数据结构
  • 系统集成路由器OSPF动态、综合路由配置
  • 【力扣周赛 338】
  • 大数据Flink进阶(八):Apache Flink架构介绍
  • Mars3d项目启动上的一些坑
  • 通俗易懂【Springboot】 单文件下载和批量下载(多个文件合成一个压缩包下载)
  • CnOpenData中国行政区划shp数据
  • GPT-4零失误通关大厂模拟面试,offer拿到手软?与AGI首次接触
  • Hardhat 环境搭建及教程示例
  • 复杂链表的复制-剑指Offer35-java