C++ 标准模板库
来源:互联网 发布:网络节点是什么意思 编辑:程序博客网 时间:2024/06/06 03:00
标准模板库
STL:标准模板库 STL:Standard Template Lib
### 一 vector 向量
本质:对数组的封装。
特点:读取能在常数时间完成。
初始化vector对象的方式
遍历vector中的数据的常用方法
第一种方法:
for(int k=0;k<vec.size();K++){ cout<<vec[k]<<endl;}
第二种方法:
迭代器:iterator
int main(void) { vector vec; vec.push_back("hello"); vector<string>::iterator citer=vec.begin(); for(;citer!=vec.end();citer++) { cout<<*citer<endl; } return 0; }
二 list:链表
特点:数据插入速度快。
三 map:映射
map<int,string> m;pair<int,string> p1(10,"shanghai");pair<int,string> p2(20,"beijing");m.insert(p1);m.insert(p2);cout<<m[10]<<endl;cout<<m[20]<<endl;
map<string,string> m;pair<string,string> p1("S","shanghai");pair<string,string> p2("B","beijing");m.insert(p1);m.insert(p2);cout<<m["S"]<<endl;cout<<m["B"]<<endl;
四 标准模板库的编码实现
由于vector使用方法已经掌握差不多,此处只想着重强调两个函数:front()以及 back()这两个函数,表示vector中的首和尾。接下来,重点学习一下 list以及map的使用方法。
关于list用法示例代码:
///////关于list的使用方法void main(){ list<int> list1; list1.push_back(4); list1.push_back(7); list1.push_back(10); //以下方法不可行 //for (int i = 0; list1.size(); i++) //{ // cout << list1[i] << endl; //} ////使用迭代器遍历可行 list<int>::iterator itor = list1.begin(); for (; itor != list1.end(); itor++) { cout << *itor << endl; }}
关于map示例代码: void main(){ map<int, string> m; pair<int, string> p1(3, "hello"); pair<int, string> p2(6, "world"); //m.push_back(p1);////map中没有push_back m.insert(p1); m.insert(p2); cout << m[3] << endl; cout << m[6] << endl; map<int, string>::iterator itor = m.begin(); /*for (; itor != m.end(); itor++) { std::cout<<*itor << endl;/////这种方法不可行 }*/ for (; itor != m.end(); itor++) { std::cout<<itor->first << endl; cout << itor->second << endl; cout << endl; }}
注意到:对于map里的数据,是根据first的大小自动进行排序,而与insert调用顺序无关。同样,对于map<string,string>
也取决于第一个string的大小顺序。
综合示例如下:
#include <iostream>#include <string>#include <stdlib.h>#include<list>#include<vector>#include<map>using namespace std;///////关于list的使用方法int main(){ // 使用vector存储数字:3、4、8、4 vector<int> vec; vec.push_back(3); vec.push_back(4); vec.push_back(8); vec.push_back(4); //循环打印数字 vector<int>::iterator itor = vec.begin(); for (; itor != vec.end(); itor++) { cout << *itor << endl; } // 使用map来存储字符串键值对 map<int, string> m; pair<int, string> p1(5, "Shang Hai"); pair<int, string> p2(10, "Bei Jing"); pair<int, string> p3(7, "Guang Zhou"); m.insert(p1); m.insert(p2); m.insert(p3); // 打印map中数据 map<int, string>::iterator it = m.begin(); for (; it!=m.end(); it++) { cout << it->first << endl; cout << it->second << endl; cout << endl; } return 0;}
0 1
- C++:标准模板库(STL)
- C++:标准模板库vector
- C++:标准模板库map
- C++:标准模板库string
- C++:标准模板库Sort
- C++STL标准模板库
- C++:STL(标准模板库)
- C++_标准模板库(STL)
- C++:标准库和标准模板库STL概述
- stdlib 标准C 模板库函数
- 模板与标准模板库
- C++中的标准模板库STL及容器
- C++,VC++,MFC,STL(standard template library,标准模板库)
- 【C/C++学院】(12)C++标准模板库STL
- c++primer——模板,标准库特殊设施
- C++PP Chapter XVI String类和标准模板库
- 【C++】 C++标准模板库(一) Vector
- 【C++】 C++标准模板库(二) Lists
- 字符串切割
- 顺时针打印矩阵
- 塔防大战unity5.5版本系列(part6)
- C语言_心得总结_1
- 你的密码安全吗?
- C++ 标准模板库
- HDU-1004-Let the Balloon Rise
- 主线程和子线程均循环10次,两者交替运行50次
- 1016:部分A+B
- 深挖unity的资源管理
- eclipse 使用maven 构建springboot +全局异常与局部异常区别
- (升级版)arduino uno + dht11 + 舵机 +w5100网络模块 温度 网络控制舵机
- Android适配总结
- 集合(1)—List接口的实现类ArrayList