首页 > 其他分享 >STL

STL

时间:2024-04-18 12:45:21浏览次数:7  
标签:下标 STL 元素 st 数组名 vec key

STL

  • 默认都是从小到大排序
  • greater 从大到小的规则
  • 也可以自定义排序规则
struct Rule{  
	bool operator() (const T & a1,const T & a2) const{
		//排序规则
	}
}

数组

vector

vector<int>a;
a.push_back()  //在最后添加
a.pop_back()  //去掉最后一个数据
a.find()   //判断是否存在
a.size()
a.erase()   //删除指针所指数据项
a.swap(vec); //用vec容器替换a容器
//翻转
#include <algorithm> 
reverse(vec.begin(),vec.end());  
//去重
sort(vec.begin(),vec.end()); 
vec.erase(unique(vec.begin(), vec.end()),vec.end());

排序

sort(a+i,a+j,Rule)

左闭右开

二分查找

binary_search(数组名+n1,数组名+n2,key值,Rule排序规则结构名())

  1. Rule规则要与排序规则一致
  2. 等于含义是 a必须在b前面 与 b必须在a前面 都不成立
    所以key不一定等于查找到的值

查找下界

T* lower_bound(数组名+n1,数组名+n2,key值)

数组从小到大排好

*P是查找区间里下标最小的, 大于等于"值"后面的元素。如果找不到,p指向下标为n2的元素

T* lower_bound(数组名+n1,数组名+n2,key值,Rule排序规则结构名())

返回 *P

*P是查找区间里下标最小的, 按自定义排序规则, 可以排在"值"后面的元素。如果找不到,p指向下标为n2的元素

查找上界

T* upper_bound(数组名+n1,数组名+n2,key值)

数组从小到大排好

*P是查找区间里下标最小的, 大于"值"后面的元素。如果找不到,p指向下标为n2的元素

T* upper_bound(数组名+n1,数组名+n2,key值,Rule排序规则结构名())

返回 *P

*P是查找区间里下标最小的, 按自定义排序规则, 必须排在"值"后面的元素。如果找不到,p指向下标为n2的元素

平衡二叉树数据结构

multiset st   复杂度log(n)

基本

排序规则:a<b

st.insert() 添加

st.find() 查找

找不到返回值为st.end()

规则:a必须在b前面 与 b必须在a前面 都不成立

st.erase() 删除

st.count(x) x的个数

st.size() 元素个数

>返回值都是迭代器

访问元素 迭代器

multiset::iterator p;

>p相当于指针,指向元素

>可以++,--,!=,==

>不可以比大小,不可加减整数,不可相减

st.begin()

st.end()

st.lower_bound(key)

该函数返回一个迭代器,该迭代器指向刚好大于key的下一个元素。如果参数中传入的键超过了容器中的最大键,则返回的迭代器将指向st.end(),该数值对应容器中最后一个元素之后的下标.

st.upper_bound(key)

该函数返回一个迭代器,该迭代器指向刚好等于key的一个元素。如果参数中传递的键不在容器中,则返回的迭代器将指向刚好大于key的那个元素,如果传入的key超过了容器中的最大键,则返回的迭代器将指向st.end(),该数值对应容器中最后一个元素之后的下标.

set

其中元素内容不能重复

在插入时可能不成功

result = st.insert(value);

返回值时pair类型

struct {

set::iterator first;

bool second;

}

!result.second == true 表示插入不成功

multimap

typedef multimap<T1,T2> MAP_STD

struct {

T1 first;

T2 second;

}

按照first排序 a.first < b.first

MAP_STD 等价于 multimap<T1,T2>

typedef multimap<T1,T2> MP

MP mp;

mp.insert(make_pair(,))

map

可以使用[],插入查找

下标为关键字,返回值为first与关键字相同的元素的second

标签:下标,STL,元素,st,数组名,vec,key
From: https://www.cnblogs.com/AndyYX/p/18143273

相关文章

  • 1019 数字黑洞(stl)
    第一次知道sprintf这个函数,孤陋寡闻了。写法一,#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn; cin>>n;charcs[100];sprintf(cs,"%04d",n);inta=0,b=0;while(a-b!=6174){ sort(cs,cs+4,greater<char>());//降序......
  • whistle代理使用
    1.介绍whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系......
  • STL学习
    栈:stack容器内元素的访问​由于栈(stack)本身就是一种后进先出的数据结构。在STL中stack中只能通过top()来访问栈顶元素栈上的基本操作栈的基本操作包括:函数名用途push(x)将x入栈top()获得栈顶元素pop()用以弹出栈顶元素empty()可以检测stack内是否为......
  • STL笔记 之 vector
    初识STLSTL,(StandardTemplateLibrary),即"标准模板库",由惠普实验室开发,STL中提供了非常多对信息学奥赛很有用的东西。vectorvetor是STL中的一个容器,可以看作一个不定长的数组,其基本形式为:vector<数据类型>名字;如:vector<int>v或vector<char>t。vector的基本操作先定......
  • C++_STL提供了六大组件
    STL提供了六大组件StandardTemplateLibrary容器:Containers各种数据结构,如vector,list,deque,set,mep等。容器是类模板。在声明容器变量时,可以指定容器将保存的元素的类型算法:各种常用的算法,提供了执行各种操作的方式,包括对容器内容执行初始化,排序,搜索和转换等操作,比如sort,s......
  • C++ 标准模板库 STL(1)set 与 multiset
    一、简介    set与multiset容器能够快速查找键,键是存储在一维容器中的值,二者的区别在于前者不能够存储重复的键值,后者能够存储重复键值。    set与multiset内部结构类似于二叉树,并且被插入到set与multiset容器中的元素会默认进行排序,从而提高查找速度。这意......
  • # C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解
    C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的queue用法整理C++之STL整理(7)之queue用法(创建、赋值、增删查改)详解queue1.queue构造函数2.queue存取、插入和删除操作3.......
  • C++笔记:STL容器库的使用
    前置:    对于stl容器库,我只做了一些常用的笔记,关于更详细的使用可以参考:https://cppreference.com/https://cppreference.com/一.string--字符串对于C++中string字符串会比C语言的字符数组使用起来会顺手许多。命名空间:std关于迭代器可以理解为指针,和指针的使......
  • STLINK-V3PWR连接STM32最小系统板方法(含引脚分布)
    前段时间导师给我了一个STLINK-V3PWR,让我试着用它下载程序到STM32单片机上,我找了半天发现网上资源挺少的,于是自己搞了一下,从官网下载了相关的规格书,然后连了一下。下面是我自己找的官方资源然后翻译的。下面是STLINK-V3PWR的调试端口引脚分布。手上只有STM32F103C6T6A......
  • C++初级----string类(STL)
    1、标准库中的string1.1、sring介绍    字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支,其接口类似于标准字符容器的接口,但是添加了专门用于操作的单字节字符字符串的设计特性。    string类是使用char,即作为他的字符类型,使用他默认的char_tr......