ACM竞赛中常用的C++ STL字符串与向量函数详解
需积分: 9 52 浏览量
更新于2024-09-26
收藏 17KB DOCX 举报
"ACM常用的STL文档包含了关于标准C++库中字符串类std::string以及向量类模板std::vector的重要成员函数的详细说明。这些工具在算法竞赛(ACM)和其他编程任务中非常常见,是高效编程的基础。"
在C++中,STL(Standard Template Library,标准模板库)是提供了一系列高效容器、迭代器、算法和函数对象的库,极大地提高了编程效率。以下是关于std::string和std::vector的详细说明:
1. **std::string**:
- `std::string s1;` 创建一个空字符串。
- `std::string s3(s2);` 通过另一个字符串创建副本。
- `std::string s2("thisisastring");` 初始化字符串。
- `begin()` 和 `end()` 分别返回指向字符串开始和结束的迭代器。
- `rbegin()` 和 `rend()` 返回反向迭代器,用于反向遍历。
- `size()` 和 `length()` 返回字符串的长度。
- `max_size()` 表示字符串可能的最大长度。
- `capacity()` 指示当前分配的内存可容纳的字符数量。
- `empty()` 判断字符串是否为空。
- `operator[]` 访问指定索引处的字符。
- `c_str()` 返回C风格的const char*指针。
- `data()` 获取字符串数据的地址。
- `operator=` 用于赋值。
- `reserve()` 预先分配内存。
- `swap()` 交换两个字符串的内容。
- `insert()` 在指定位置插入字符或字符串。
- `append()` 追加字符串。
- `push_back()` 添加单个字符到字符串末尾。
- `erase()` 删除指定范围的字符。
- `clear()` 清空字符串。
- `resize()` 改变字符串的大小。
- `assign()` 重新分配字符串的值。
- `replace()` 替换指定范围的字符。
- `copy()` 将字符串复制到其他位置。
- `find()` 查找子字符串并返回索引。
- `rfind()` 反向查找子字符串。
- `find_first_of()` 查找包含子串中的任意字符的第一个位置。
- `find_first_not_of()` 查找不包含子串中任意字符的第一个位置。
- `find_last_of()` 查找包含子串中任意字符的最后一个位置。
- `find_last_not_of()` 查找不包含子串中任意字符的最后一个位置。
- `substr(n1, len)` 提取子字符串。
- 关系运算符(如 `==`, `!=`, `<`, `>` 等)支持字符串的比较。
- `operator>>` 从输入流读取字符串。
- `operator<<` 写入输出流。
- `getline()` 从输入流读取一行。
2. **std::vector**:
- `std::vector<type> name;` 创建一个空的类型为`type`的向量。
- `std::vector<type> name(size);` 创建一个具有指定大小的类型为`type`的向量,初始值未定义。
- `std::vector<type> name(initializer_list);` 使用初始化列表创建向量。
- `begin()` 和 `end()` 返回指向向量开始和结束的迭代器。
- `rbegin()` 和 `rend()` 返回反向迭代器。
- `size()` 返回向量的元素数量。
- `max_size()` 表示向量可能的最大大小。
- `capacity()` 指示当前分配的内存可容纳的元素数量。
- `empty()` 判断向量是否为空。
- `reserve()` 预先分配内存。
- `resize()` 改变向量大小,可以插入或移除元素。
- `push_back()` 在向量末尾添加元素。
- `pop_back()` 移除向量末尾的元素。
- `front()` 访问第一个元素。
- `back()` 访问最后一个元素。
- `operator[]` 访问指定索引处的元素。
- `at()` 安全地访问指定索引处的元素,越界时会抛出异常。
- `insert()` 在指定位置插入元素。
- `erase()` 删除指定位置的元素或范围。
- `clear()` 清空向量。
- `swap()` 交换两个向量的内容。
- `reserve()` 预先分配内存。
- `emplace()` 在向量的指定位置直接构造新元素。
- `emplace_back()` 在向量末尾直接构造新元素。
- `shrink_to_fit()` 请求向量的容量与实际元素数量一致。
在ACM编程中,std::string和std::vector是处理字符串和动态数组的关键工具,它们提供了丰富的操作和高效的性能,使得代码更加简洁和高效。了解并熟练掌握这两个容器的使用,对于提升编程能力至关重要。
2021-06-06 上传
2013-01-31 上传
2021-11-06 上传
2024-07-10 上传
2021-05-20 上传
2020-09-25 上传
2022-11-13 上传
2024-04-17 上传
GCC-pig
- 粉丝: 4
- 资源: 4
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析