IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【PAT】第六章 C++标准模板库介绍 -> 正文阅读

[C++知识库]【PAT】第六章 C++标准模板库介绍

第六章 C++标准模板库介绍

6.3 string的常见用法

头文件:#include 和 using namespace std;

6.3.1 string的访问

1. 通过下标直接访问

2. 通过迭代器访问

stringvector的迭代器,支持对迭代器直接进行加减某个数字。

【注意】 end()指向的是最后一个元素的下一个,而非最后一个元素。

string::iterator it;
#include <cstdio>
#include <string>
using namespace std;

int main()
{
	string str="abcd";
	for(string::iterator it=str.begin();it!=str.end();it++)
		printf("%c",*it);
	return 0;
}

6.3.2 string常用函数

1. operator+=

拼接两个string。

2. compare operator

两个string可以直接用==、!=、<、<=、>、>=比较大小。默认按字典序比较。

3. length()/size()

length()返回string的长度,即存放的字符数,时间复杂度为O(1)。size()与length()基本相同。

4. insert()

复杂度:O(n)

  • insert(pos,string):在pos的位置处插入字符串string。
  • insert(it,it2,it3)it为插入位置,it2it3为要插入字符串的首尾迭代器,表示将串[it2,it3)插入到it位置上。
#include <cstdio>
#include <string>
using namespace std;

int main()
{
	string str="abcxyz",str2="opq";
	str.insert(str.begin()+3,str2.begin(),str2.end());
	return 0;
}

5. erase()

复杂度:O(n)

  • 删除单个元素:erase(it)。it为需要删除的元素的迭代器。
#include <cstdio>
#include <string>
using namespace std;

int main()
{
	string str="abcxyz";
	str.erase(str.begin()+4);
	return 0;
}
  • 删除一个区间内所有的元素:erase(first,last)。first和last为区间的首尾迭代器,即删除[first,last)。
#include <cstdio>
#include <string>
using namespace std;

int main()
{
	string str="abcxyz";
	str.erase(str.begin()+4,str.end());
	return 0;
}
  • 删除一个区间内所有的元素:erase(pos,length)。pos为删除的起始地址,length为删除的字符个数。
#include <cstdio>
#include <string>
using namespace std;

int main()
{
   string str="abcxyz";
   str.erase(3,2);
   return 0;
}

6. clear()

清空string中的数据,时间复杂度为O(1)。

7. substr()

substr(pos,len):返回从pos位置开始,长度为len的子串,时间复杂度为O(len)。

8 string::npos

string::npos是一个常数,本身值为-1。unsigned_int类型数据,可以认为是unsigned_int类型的最大值。

9. find()

  • str.find(str2):当str2是str的子串时,返回其在str中第一次出现的位置,否则返回string::npos。
  • str.find(str2,pos):从pos位置开始匹配str2,返回其在之后第一次出现的位置,否则返回string::npos。

10.replace()

  • str.replace(pos,len,str2):把str从pos位置开始的长度为len的字串替换成str2。
  • str.replace(it1,it2,str2):把str的迭代器[it1,it2)范围的子串替换为str2。时间复杂度为O(str2.length())。

【例】A1060

6.4 map的常用函数

将任意基本类型(包括STL)映射到任意基本类型(包括STL)上,形成有序键值对。键唯一。
头文件:#include 和 using namespace std;

6.4.1 map的定义

map<typename1,typename2> mp;
字符串必须使用string,不能使用字符数组。

6.4.2 map内元素的访问

1. 下标访问

map<char,int> mp;
mp['c']

2. 迭代器访问

map<typename1,typename2> ::iterator it;
it->first访问键,it->second访问值。

6.4.3 map常用函数

1. find()

find(key)返回键为key的映射的迭代器,时间复杂度为O(logn)。

2. erase()

  • 删除单个元素
    mp.erase(it)
    mp.erase(key)

  • 删除一个区间内的元素
    mp.erase(first,last)

3.size()

获得map中键值对的对数。

4. clear()

清空map。

6.4.4 map的常见用途

6.9 algorithm头文件下的常见函数

6.9.6 sort()

头文件:#include <algorithm>using namespace std;

1. 具体使用

sort(首元素地址,尾元素元素地址的下一个地址(首元素地址+数组大小),比较函数(非必填,默认递增排序));

2. 比较函数cmp

2.1 基本数据类型:

递减排序

bool cmp(int a,int b)
{
	return a>b; 	//左大右小
}
2.2 结构体数组的排序
#include <cstdio>
#include <algorithm>
using namespace std;

struct node{
	int x,y;
}ssd[10]; 

bool cmp(node a,node b)
{
	if(a.x!=b.x)
		return a.x>b.x; 	//x不等时按x从大到小排序 
	else
		return a.y<b.y; 	//x相等时按从小到大排序 
}
int main()
{
	...
	sort(ssd,ssd+10;cmp); 
}
2.3 容器的排序

只有vectorstringdeque可以使用sort


#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(T a,T b)
{
	return a>b;
}
int main()
{
	
	vector<T> vi;
	...
	sort(vi.begin(),vi.end(),cmp);
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:15:53  更:2021-07-24 11:18:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/24 8:30:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码