c++ summary容器

news/2024/12/1 15:26:48/

线性容器vector

  • 对于线性容器,除了front,back,其他的都用的地址进行操作。

初始化

vector<int> abc(10);    //初始化了10个默认值为0的元素
vector<int> cde(101);    //初始化了10个值为1的元素- 通过数组地址初始化
int a[5] = {1,2,3,4,5};
vector<int> b(a, a+5);//通过数组a的地址初始化,注意地址是从0到5(左闭右开区间)
或 vector<int> res={-1,-1};

基础操作

在这里插入图片描述

排序

默认升序 std::sort(起点地址, 终点地址);

        数组int a[] = {2, 1, 3};排序 std::sort(a, a+3);

        vector<int> a; 排序 std::sort(a.begin(), a.end());

放入函数指针< std::sort(起点地址, 终点地址,f);

简单降序

bool f(const int a, const int b) {return a > b; // 降序排列
}

vector<Obj> myobj ; 排序


bool f(const Obg& a, const Obg& b) {return a.value <  b.value; // True 不换
}

队列 queue (vector minus?)

queue<int> q;
q.front();q.back();
q.push(x);  q.pop(); q.empty();

栈 stack(queue minus?)

stack <int> s;
s.top();
s.push(x);  s.pop(); s.empty();

集合set(vector plus?)

  • 与线性容器vector不同,set<int> s;主要集中于元素的操作。
  • s.insert(x) s.erase(x)
  • s.find(x) set<int>::iterator it; it = st.find(x); s.count(x)返回0或1
  • s.empty() s.size()读大小还是用这个万能的函数
  • 像数组一样 set也有begin()和end()

map(更复杂一点,迭代器返回的是一个class的地址)

初始化

std::map<int ,std::string> user;
user[0] = "a";//会覆写
map::iterator it = user.begin();//输出用 it->first  ,it->second 
auto it = user.begin();
using namespace std;
map<int,string>::iterator it; it = user.find(x);
if (it != user.end()){ user.erase(it);}
user.erase(x);

unordered_map ?

       &nbsp;map是有序的,键保证能比较大小,红黑树实现,占用空间高,适用于有序的结构。unordered_map 无序,哈希表实现,查找效率高。

tppedef bool (*foo)(const Obj& a, const Obj& b);//定义函数指针类型foo
bool f(const Obg& a, const Obg& b) {return a.value <  b.value; 
}
std::map<Obj ,std::string, foo> user(f);
user[0] = "a";//会覆写

http://www.ppmy.cn/news/22424.html

相关文章

【手撕面试题】HTML+CSS(高频知识点三)

目录 面试官&#xff1a;清除浮动有哪些方式&#xff1f; 面试官&#xff1a;在网页中应该使用奇数还是偶数的字体&#xff1f; 面试官&#xff1a;position有哪些值&#xff1f;分别是根据什么定位&#xff1f; 面试官&#xff1a;写一个左中右布局占满屏幕&#xff0c;其…

codeforces签到题之div4

&#x1f33c;坏女孩&#xff08;抖音热门版&#xff09; - Laziness惰/西洛卡 - 单曲 - 网易云音乐 标签&#xff1a;模拟&#xff0c;暴力&#xff0c;排序&#xff0c;贪心&#xff0c;双指针&#xff0c;几何&#xff0c;字符串 目录 一&#xff0c;codeforces检查 二…

Go第 19 章 :Redis 的使用

Go第 19 章 &#xff1a;Redis 19.1 Redis 基本介绍 19.1.1 Redis 的安装 19.1.2 Redis 操作的基本原理图 19.2 Redis 的安装和基本使用 19.2.1 Redis 的启动: mac :src/redis-server windows: 19.3 Redis 的操作指令一览 19.3.1 Redis 的基本使用: 说明: Redis 安装好后…

基础IO(下)

基础IO&#xff08;下&#xff09;模拟实现封装C标准库为shell添加重定向功能区分stdout和stderr文件系统磁盘的物理结构磁盘的存储结构磁盘的逻辑结构文件系统的管理理解创建文件/删除文件/查看文件查看文件的更多属性软硬链接软链接硬链接链接指令硬链接数软硬链接的区别删除…

java处理,调用外系统的 WebAPI(https请求)时,相关知识整理

目录 ■整理内容 1.外系统连接时&#xff0c;注意点 2.https证书相关问题---java---证书产生的错误---不被信任的证书 3.https证书相关问题---CURL---通过参数-可以忽略-证书信任问题 4.证书添加---在调用方-添加被调用方(WebAPI https)的证书 5.之前的一个作业&#xff…

「抄底 Android 内存优化 9」 —手撕 LeakCanary 核心原理

核心内容在文章最后面的总结部分 1 自动安装原理 在2.0版本开始&#xff0c;LeakCanary 已经不需要手动初始化了&#xff0c;只需要引入以来即可: // leakCanarydebugImplementation com.squareup.leakcanary:leakcanary-android:2.4那么他是如何进行初始化的呢&#xff1f;答…

DVWA-XSS(Stored)注入-Low-Medium-Hight

Low 1、进来这里可以看到&#xff0c;好像是有两个入口&#xff0c;先随便填个数据试试水&#xff0c;勒特 payload: <script>alert(1)</script> 2、直接提交&#xff0c;简单拿下。 Medium 1、继续尝试刚才的入口&#xff0c;勒特。 payload: <script>ale…

OpenWrt之IPTV单线复用详细教程

文章目录前言OpenWrt版本1. 让路由与光猫互通2. 设置Vlan3. 配置接口4. 配置路由表5. 播放测试后话前言 前段时间开始, 电信就开始整理单播源传播的乱象, 就限制了非内网无法打开直播源, 于是只能搞搞内网融合了, 让我的RTSP源重新焕发生机 OpenWrt版本 22.02 1. 让路由与光猫…