C++_STL范例大全(一)
### C++ STL范例大全(一):容器部分详解 #### Vector 在C++标准模板库(STL)中,`vector`是一种动态数组容器,它能够根据需要自动调整大小。以下是一些关于`vector`的基本操作示例: ##### 构造函数 ```cpp #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string str[] = {"Alex", "John", "Robert"}; // 空向量对象 vector<int> v1; // 创建包含10个空元素的向量 vector<int> v2(10); // 创建包含10个元素的向量,并为每个元素赋值0 vector<int> v3(10, 0); // 创建向量并从字符串数组中分配值 vector<string> v4(str + 0, str + 3); vector<string>::iterator sIt = v4.begin(); while (sIt != v4.end()) cout << *sIt++ << " "; cout << endl; // 复制构造函数 vector<string> v5(v4); for (int i = 0; i < 3; i++) cout << v5[i] << " "; cout << endl; return 0; } ``` **输出结果**: ``` Alex John Robert Alex John Robert ``` 这段代码展示了`vector`的多种构造方式,包括空构造、指定长度构造、初始化列表构造以及复制构造。 ##### assign方法 `assign`方法用于将新值赋给向量中的元素或改变向量的大小。 ```cpp #include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { int ary[] = {1, 2, 3, 4, 5}; vector<int> v; // 将数组ary的内容赋给向量v v.assign(ary, ary + 5); copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); cout << endl; // 将v替换为3个元素,每个元素值为100 v.assign(3, 100); copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); cout << endl; return 0; } ``` **输出结果**: ``` 1 2 3 4 5 100 100 100 ``` ##### at方法 `at`方法用于安全地访问向量中的元素,当索引超出范围时会抛出异常。 ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> v(3, 0); v[0] = 100; v.at(1) = 200; for (int i = 0; i < 3; i++) cout << v.at(i) << " "; cout << endl; return 0; } ``` **输出结果**: ``` 100 200 0 ``` ##### back方法 `back`方法用于获取向量最后一个元素的引用。 ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> v{1, 2, 3}; cout << "Last element is: " << v.back() << endl; return 0; } ``` **输出结果**: ``` Last element is: 3 ``` #### Deque `deque`(双端队列)与`vector`类似,但提供了更快的两端插入和删除操作。接下来的部分将详细介绍`deque`的操作示例及其与其他容器的区别。 #### List `list`是双向链表,支持高效插入和删除操作。这部分将展示如何使用`list`进行数据处理。 #### Set `set`是排序且不重复元素的集合,使用红黑树实现。这里将探讨`set`的基本用法和特性。 #### Multiset `multiset`与`set`相似,但允许存储多个相同的元素。 #### Map `map`是键值对的集合,其中键是唯一的,且按升序排列。 #### Multimap `multimap`与`map`类似,但允许多个键具有相同的值。 #### Stack `stack`是一种后进先出(LIFO)的数据结构,提供`push`和`pop`操作。 #### Queue `queue`是一种先进先出(FIFO)的数据结构,支持`push`和`pop`操作。 #### Priority_queue `priority_queue`是一种特殊类型的队列,始终弹出优先级最高的元素。 以上介绍了`vector`的基础操作和使用场景。接下来的文章中,我们将继续探索STL中的其他容器类型及其应用案例。
剩余139页未读,继续阅读
- huliwhere2012-10-17简单但足够了,如果能有范例就更好了
- 粉丝: 24
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 日志文件:日志概念、LogBack日志技术的概述、使用、logback.xml配置文件详解
- 基于python使用Drl来解决多智能体卸载问题+源码(期末作业&课程设计&项目开发)
- 科学计算领域中的Fortran语言基础知识与应用
- 4.健身房预约课程-微信小程序.zip
- 小乌龟键盘控制源码111111
- 电赛2023年本科组电子电路设计比赛指南与任务解析
- Delphi 12 控件之dspack For Delphi 10.2 - 视频播放组件包e963a-main.zip
- delphi 12 控件之FB4D – The OpenSource Cross-Platform Library for FirebaseFB4D-master.zip
- Rust语言入门与进阶教程
- delphi 12 控件之Delphi开发的微信电脑版登录工具ec617-main.zip