备战蓝桥杯---数据结构与STL应用(基础3)

今天我们主要介绍的是pair,string,set,map

pair:我们可以把它当作一个结构体:

cpp 复制代码
void solve(){
    pair<int int> a;//创建
    a=make_pair(1,2);//添加元素
    cout<<a.first<<endl<<a.second<<endl;}//输出

当然,它也可以嵌套(注意,两个尖括号不能连在一起,否则会当作右移:

cpp 复制代码
void solve(){
    pair<int pair<int,int> > a;}

string:字符串

接下来是他的创建与初始化:

cpp 复制代码
void solve(){
    string s;//创建
    string s1("123456");//生成123456
    string s2("1234",0,3);//从0位置开始,长度为3
    string s3("123456",5);//长度为5
    string s4(5,'2');//构造5个2连起来的字符串
    string s5=(s1,2);//从s1中截取从第3个元素到最后
}

注意,1.string是可以用<,><=,>=进行比较的,并可以用+进行拼接。

2.s=s+'2'的复杂度为n,s+='2';的复杂度为1.

下面是它的函数方法:

|-------------------------------------|----------------------------------|
| s.size()/s.length() | 返回字符个数 |
| s.push_back() | 末尾插入一个字符 |
| s.insert(pos,e) | 在pos位置插入字符 |
| s.append(str) | 字符串结尾添加字符串 |
| erase(iterator p) | 删除所指字符 |
| erase(iterator first,iterator last) | 删除[first,last) |
| erase(pos,len) | 删除从pos开始的len个字符 |
| clear() | 删除所有字符 |
| s.substr(pos,n) | 截取从pos开始的n个字符 |
| s.find(str/c,pos) | 从pos开始(默认为0)找str/c,找到返回位置索引,否则-1 |

set:集合,里面的元素不重复,有序

初始化定义:set<int> s;

函数方法:

|------------------|-----------------|
| s.begin() | 返回第一个元素地址 |
| s.end() | 返回最后一个元素的下一个地址 |
| s.clear() | 删除其所有元素 |
| s.empty() | 判断是否为空 |
| s.insert() | 插入一个元素 |
| s.size() | 返回元素个数 |
| erase(key_value) | 删除键值key_value的值 |

|-----------|------------|
| s.find() | 查找某一元素 |
| s.count() | 查询某一元素是否出现 |
| | |

map:每个键对应一个值,类似于python中的字典

赋值:map[0]={1,1};

下面是它的函数方法:

|---------------|---------------------------|
| mp.find(key) | 返回键为key的迭代器,不存在返回mp.end() |
| mp.erase(it) | 消除迭代器对应的键与值 |
| mp.erase(key) | 根据键删除键与值 |
| mp.size() | 返回映射的对数 |
| mp.clear() | 清空元素 |
| mp.insert() | 插入元素 |
| mp.begin() | 返回第一个元素地址 |
| mp.end() | 返回最后一个元素的下一个地址 |
| mp.count(key) | 存在返回1,否则0 |
| | |

下面介绍几种比较有用的STL函数:

stoi

atoi(const char*)//用于把字符串化为整形:"1234"------》1234(默认在int范围)

atoi则不会检查,超出上界输出上界

iota

让序列递增赋值:

vector <int> a(10)

iota(a.begin(),a.end(),0);

则10个元素为0 1 2 3 4 5 6 7 8 9

max/min

可以用来多个元素的最大最小值

max({a,b,c,d})

reverse

reverse(beg,end)//对序列反转(可以是字符串,也可以是数组)

相关推荐
田梓燊41 分钟前
code 560
数据结构·算法·哈希算法
会编程的土豆2 小时前
【数据结构与算法】动态规划
数据结构·c++·算法·leetcode·代理模式
迈巴赫车主3 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 78. 子集 | C++ 回溯算法题解
c++·算法·leetcode
Kethy__3 小时前
计算机中级-数据库系统工程师-数据结构-查找算法
数据结构·算法·软考·查找算法·计算机中级
所以遗憾是什么呢?3 小时前
【题解】Codeforces Round 1081 (Div. 2)
数据结构·c++·算法·acm·icpc·ccpc·xcpc
白藏y4 小时前
【C++】muduo接口补充
开发语言·c++·muduo
xiaoye-duck4 小时前
《算法题讲解指南:递归,搜索与回溯算法--综合练习》--14.找出所有子集的异或总和再求和,15.全排列Ⅱ,16.电话号码的字母组合,17.括号生成
c++·算法·深度优先·回溯
OOJO4 小时前
c++---vector介绍
c语言·开发语言·数据结构·c++·算法·vim·visual studio
茉莉玫瑰花茶4 小时前
数据结构 - 并查集
数据结构