C++_STL使用例子大全

### C++ STL 使用例子大全:容器部分 #### Vector **Vector** 是 C++ 标准模板库 (STL) 中非常重要的容器之一,它提供了一种动态数组的实现方式,可以方便地添加或删除元素,并且自动管理内存。在本节中,我们将详细探讨 Vector 的构造、赋值、访问元素等基本操作。 ##### 构造函数 **Vector** 提供了多种构造方法来创建向量对象: - **空向量**:`vector<int> v1;` - 创建一个没有任何元素的空向量。 - **指定大小的向量**:`vector<int> v2(10);` - 创建一个包含 10 个元素的向量,所有元素都被默认初始化。 - **指定大小及初始值的向量**:`vector<int> v3(10, 0);` - 创建一个包含 10 个元素的向量,所有元素的值均为 0。 - **通过范围构造**:`vector<string> v4(str + 0, str + 3);` - 通过一个字符数组 `str` 的子区间来创建向量。 - **复制构造**:`vector<string> v5(v4);` - 通过已存在的向量 `v4` 来创建新的向量 `v5`,此时两个向量具有相同的元素。 **示例代码**: ```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 ``` ##### 赋值(`assign`) 向量可以通过 `assign` 成员函数来改变其内容,支持两种方式: - **通过区间赋值**:`v.assign(ary, ary + 5);` - 将数组 `ary` 的前五个元素赋值给向量 `v`。 - **通过重复值赋值**:`v.assign(3, 100);` - 将向量 `v` 的内容替换为三个值为 100 的元素。 **示例代码**: ```cpp #include <iostream> #include <vector> #include <algorithm> #include <iterator> int main() { int ary[] = {1, 2, 3, 4, 5}; vector<int> v; // 通过区间赋值 v.assign(ary, ary + 5); copy(v.begin(), v.end(), ostream_iterator<int>(cout, " ")); cout << endl; // 通过重复值赋值 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 ``` ##### 访问元素 - **直接索引**:`v[0] = 100;` - 直接使用下标访问元素。 - **使用 `at` 方法**:`v.at(1) = 200;` - 使用 `at` 方法安全地访问元素,当索引超出范围时会抛出异常。 **示例代码**: ```cpp #include <iostream> #include <vector> 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 ``` ### 总结 通过上述示例,我们可以看到 **Vector** 在 C++ STL 中的应用非常广泛。掌握了这些基本操作后,我们就能更高效地利用 **Vector** 完成各种任务。接下来的文章将陆续介绍其他容器如 Deque、List、Set 等的使用方法,敬请期待!



















剩余139页未读,继续阅读

- dahai_high2016-10-03非常棒的资源,比起看文献,更加有效率
- skierhood2012-08-28不错,全是源码

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Google 机器学习入门视频的中文字幕翻译及示例代码
- 【能源效率模糊柔性作业车间调度】基于双种群进化算法的模糊完工时间和能耗优化系统设计(含详细代码及解释)
- A176基于springboot+vue的扶贫众筹网(完整前后端代码+sql脚本+开发文档+全套软件)
- 2025年新版医院感染知识试题(含答案).docx
- 2025年新版医院感染知识试题(附含答案).docx
- 2025年新生儿科院感培训试题(附含答案).docx
- 2025年信息技术学业水平全考试测试题与答案.docx
- 2025年信息技术学业水平全考试测试题及答案.docx
- 2025年新生儿科院感培训试题(含答案).docx
- 2025年消防安全培训考试题库与解析答案.docx
- 2025年消防安全培训考试题库及解析答案.docx
- 电机控制基于移动水平估计(MHE)的永磁同步电机(PMSM)无传感器驱动系统设计与优化(含详细代码及解释)
- 2025年信息技术中考练习系统必考试题库与答案.docx
- 2025年新媒体运营专业考试必考试题及答案.docx
- 2025年新生儿护理常规试题(附含答案).docx
- 2025年消毒供应中心理论试题(附答案).docx


