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

C++STL的六大部件和联系

C++STL六大部件:仿函数,算法,容器,迭代器,适配器,空间配置器。

仿函数:实质上是一种类重载了()运算符,使之可以像函数一样调用,举个例子:

#include<iostream>
using namespace std;
class Add{
    public:
        int operator ()(int a,int b){
            return a+b;
        };
};
int main(){
    Add add;
    int result=add(3,5);
    cout<<result<<endl;
    return 0;
}

仿函数可以作为算法的参数,例如:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class SortIt{
    public:
        bool operator ()(int a,int b)const{
            return a>b;
        };
};
int main(){
    vector<int> vec={1,5,2,4,3};
    sort(vec.begin(),vec.end(),SortIt());
    for(auto item:vec){
        cout<<item<<endl;
    }
    return 0;
}

算法:算法通过迭代器对容器进行操作,不依赖容器的类型。

容器:容器包含序列容器(例如list,vector等)是线性分布的,以及关联容器(例如map等)是基于平衡二叉树以及哈希表实现的。

迭代器:迭代器类似指针可以对容器内的元素进行遍历操作,容器提供的成员函数begin(),end()返回一个指向容器起始和结束的迭代器,这些迭代器是容器和算法之间的桥梁,因此,begin()和end()提供了容器元素的迭代器访问接口。

适配器:适配器可以将仿函数和函数进行包装和转换,可以对不同容器进行转换。同时可以对容器和迭代器进行适配。

空间配置器:空间配置器为容器提供内存管理服务,当容器需要分配新空间时,会调用空间配置器进行内存分配的工作。

相关文章:

  • 刷题记录(LeetCode 78 子集)
  • 聚焦两会:科技与发展并进,赛逸展2025成创新新舞台
  • 1-002:MySQL InnoDB引擎中的聚簇索引和非聚簇索引有什么区别?
  • Cline使用MCP-TypeScript版本
  • springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)
  • 时序和延时
  • Linux——system V共享内存
  • 电子电气架构 ---常见车规MCU安全启动方案
  • Python第十六课:深度学习入门 | 神经网络解密
  • Python与AI的深度渊源:从历史交融到技术革新
  • 【Zinx】Day5-Part4:Zinx 的连接属性设置
  • vue2项目开启br压缩
  • L1-017 到底有多二
  • C语言学习总结
  • ONLYOFFICE AI 功能升级:3月11日直播揭秘!
  • Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
  • git submodule管理的仓库怎么删除子仓库
  • 【Linux】36.简单的TCP网络程序
  • c++的基础排序算法
  • 3dconvert-viewer.js SDK API使用指南
  • b2b网站如何做排名/企点
  • 个人网站,可以做淘宝客吗/威海seo
  • 城市建设网站鹤岗市/网站热度查询
  • 深圳新恒基建设公司/谷歌seo
  • 专门做中式的设计网站/杭州百度推广
  • 网站备案方法/如何优化搜索引擎的搜索功能