ACM竞赛中常用的C++ STL字符串与向量函数详解

需积分: 9 4 下载量 66 浏览量 更新于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是处理字符串和动态数组的关键工具,它们提供了丰富的操作和高效的性能,使得代码更加简洁和高效。了解并熟练掌握这两个容器的使用,对于提升编程能力至关重要。