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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于STM32的智能家居系统全部资料+详细文档+优秀项目.zip
- 基于阿里云的智能家居控制APP全部资料+详细文档+优秀项目.zip
- 基于stm32智能家居项目全部资料+详细文档+优秀项目.zip
- 基于安卓与STM32通信硬件开发项目,实现安卓端控制家庭灯,窗帘,门,有毒有害其他报警等,全部资料+详细文档+优秀项目.zip
- 基于安卓的智能家居项目源码,通过Zigbee网络控制采集家居设备实现管理功能、全部资料+详细文档+优秀项目.zip
- 基于从零开始打造一个智能家居系统全部资料+详细文档+优秀项目.zip
- 基于单片机课程实践——智能家居系统(安卓端)全部资料+详细文档+优秀项目.zip
- 基于机智云平台打造的物联网智能家居一体化智能App、全部资料+详细文档+优秀项目.zip
- 基于电力线载波智能家居控制系统全部资料+详细文档+优秀项目.zip
- 基于使用Qt制作的智能家居上位机全部资料+详细文档+优秀项目.zip
- 基于使用“树莓派+Django+bootstrap”搭建的智能家居监控系统全部资料+详细文档+优秀项目.zip
- 基于米家智能门锁接入开源智能家居系统全部资料+详细文档+优秀项目.zip
- 基于使用STM32、ESP8266、微信小程序搭建的MQTT智能家居全部资料+详细文档+优秀项目.zip
- 基于树莓派Linux智能家居自定义语音助手, 全部资料+详细文档+优秀项目.zip
- 基于天猫精灵智能家居技能对接homeassistant全部资料+详细文档+优秀项目.zip
- 基于一组Python脚本程序,用来控制小米智能家居设备全部资料+详细文档+优秀项目.zip