C++ STL入门与实践:向量、set与string操作详解
需积分: 9 123 浏览量
更新于2024-09-04
1
收藏 474KB PDF 举报
本篇C++语言STL学习笔记详细介绍了《算法笔记》中关于C++标准模板库(STL)的几个核心概念和用法,旨在帮助准备PAT相关考试的读者提升基础技能。主要内容涵盖了vector、set和string三种常用容器。
1. **vector**:
- 引用头文件:`#include <vector>`,使用`std`命名空间。
- 定义:vector是一个动态数组,可以变长,如`vector<int> name;` 或 `vector<vector<int>> name;`。`vector vi[100];` 是一种旧的创建方式,但不推荐。
- 元素访问:通过下标`vi[i]`或迭代器`vector::iterator it`进行访问。例如,`it = vi.begin()`获取第一个元素地址,`*(vi.begin()+i)`与`vi[i]`等效。注意仅在vector和string中支持`it += 3`这样的操作。
- 常用函数:
- `push_back()`:在末尾添加元素,时间复杂度O(1)。
- `pop_back()`:删除末尾元素,O(1)。
- `size()`:返回元素个数,O(1)。
- `clear()`:清空所有元素,时间复杂度O(N)。
- `insert()`和`erase()`:分别用于插入和删除元素,时间复杂度根据具体操作不同,可能为O(N)。
2. **set**:
- 特点:自动有序递增,且不含重复元素。
- 定义:如`set<int> set_name;`。
- 访问:仅通过迭代器`set::iterator it`,不能像vector那样使用下标。
- 常用函数:
- `insert(x)`:插入元素,时间复杂度O(logN)。
- `find(value)`:查找元素,时间复杂度O(logN)。
- `erase()`:删除指定元素,时间复杂度取决于删除位置,可能为O(1)或O(logN)。
- 常见用途:自动去重并保持升序排列。
3. **string**:
- 引用头文件:`#include <string>`(注意与`string.h`的区别)。
- 定义:如`string str;`。
- 访问:可以通过下标访问单个字符,也可以用`cin`和`cout`输入输出整个字符串。
- 注意:set不支持对string类型的元素进行操作。
总结来说,这篇学习笔记涵盖了C++ STL中的关键数据结构及其操作,包括vector的动态数组特性、set的无序存储和去重功能以及string的字符串处理。这些知识点对于理解和解决许多实际问题至关重要,尤其在编程算法和数据结构的场景中。理解并熟练运用STL能够大大提高编程效率和代码质量。
2020-05-23 上传
2021-07-22 上传
2011-01-25 上传
2022-01-30 上传
2021-03-19 上传
2021-08-16 上传
2020-06-22 上传
2022-10-29 上传
2022-10-29 上传
姜之
- 粉丝: 0
- 资源: 1
最新资源
- Python库 | unicon-3.1.0-cp34-cp34m-manylinux1_x86_64.whl
- 基于C51实现的TIMER0控制四只LED滚动闪烁.zip
- compress-string:Shannon–Fano代码和Huffman树代码
- 基于C51实现的17 数码管显示的频率计.zip
- cedh:Currying E(Edh)主机计算
- customViewDemo:customViewDemo
- Python库 | unicon-22.1-cp37-cp37m-macosx_10_10_x86_64.whl
- 微信小程序-兵马俑小程序(含语音画册与实时导览)源码
- immaterial-realm:多人角色扮演平台
- interactiveCards:用CodeSandbox创建
- 基于C51实现的05 1602LCD显示电话拨号键盘按键实验.zip
- Python库 | unicon-20.4-cp37-cp37m-macosx_10_10_x86_64.whl
- 基于python操作xlsx表格实现模拟教室预约系统源码.zip
- T3_PRAKTPM_123180024:创建回收者视图的任务
- 简单分析Java线程编程中ThreadLocal类的使用共
- Python库 | unicef_sharepoint-0.2.1-py2.py3-none-any.whl