C++ STL框架
2020-03-29 16:00:40来源:博客园 阅读 ()
C++ STL框架
STL(Standard Template Library,标准模板库)
STL的三大组件:容器(container)、算法(algorithm)、迭代器(iterator)。
STL:六大组件
容器 算法 迭代器 仿函数 适配器 空间配置器 容器:存放数据 算法:操作数据 迭代器:容器和算法的桥梁 仿函数:为算法 提供更多的策略 适配器:为算法 提供更多的参数接口 空间配置器:管理容器和算法的空间算法分类:
质变算法:是指运算过程中会更改区间内的元素内容。例如拷贝、替换、删除等等。 非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等。 迭代器的分类
然后我通过案例来讲解: 案例:容器vector
1 #include <iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 void myPrintInt(int val); 6 void test01() 7 { 8 //单端动态数组vector 类模板 9 vector<int> v;//v就是一个具体的vector容器 10 11 //pash_back 尾部插入 12 v.push_back(100); 13 v.push_back(200); 14 v.push_back(300); 15 v.push_back(400); 16 17 //访问数据 18 //定义一个迭代器存储 v的起始迭代器 19 vector<int>::iterator biginIt = v.begin(); 20 //定义一个迭代器存储 v的结束迭代器 21 vector<int>::iterator endIt = v.end(); 22 23 //for循环遍历1 24 for(;biginIt != endIt; biginIt++) 25 { 26 //对迭代器取* 代表的是 容器的元素 27 //*biginIt 28 cout<<*biginIt<<" "; 29 } 30 cout<<endl; 31 32 //for循环遍历2(推荐) 33 for(vector<int>::iterator it=v.begin(); it !=v.end(); it++) 34 { 35 cout<<*it<<" "; 36 } 37 cout<<endl; 38 39 //STL提供的算法来遍历容器(包含算法头文件 algorithm) 40 //for_each 从容器的起始--->结束 逐个元素取出 41 //myPrintInt 容器数据的打印方式 42 for_each(v.begin(), v.end(), myPrintInt); 43 cout<<endl; 44 } 45 46 void myPrintInt(int val) 47 { 48 cout<<val<<" "; 49 } 50 51 int main(int argc, char *argv[]) 52 { 53 test01(); 54 return 0; 55 }
案例3:容器嵌套容器(了解)
1 void test03() 2 { 3 vector<int> v1; 4 vector<int> v2; 5 vector<int> v3; 6 7 v1.push_back(10); 8 v1.push_back(20); 9 v1.push_back(30); 10 v1.push_back(40); 11 12 v2.push_back(100); 13 v2.push_back(200); 14 v2.push_back(300); 15 v2.push_back(400); 16 17 v3.push_back(1000); 18 v3.push_back(2000); 19 v3.push_back(3000); 20 v3.push_back(4000); 21 22 //需求在定义一个vector容器 存放 v1 v2 v3 23 vector<vector<int>> v; 24 v.push_back(v1); 25 v.push_back(v2); 26 v.push_back(v3); 27 28 //for循环遍历 29 for(vector<vector<int>>::iterator it = v.begin(); it!=v.end(); it++) 30 { 31 //*it == vector<int> v1 v2 v3 32 for(vector<int>::iterator mit=(*it).begin(); mit!=(*it).end(); mit++ ) 33 { 34 //*mit ==int 35 cout<<*mit<<" "; 36 } 37 cout<<endl; 38 } 39 }
原文链接:https://www.cnblogs.com/loliconinvincible/p/12591995.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:设计Weekday类 代码参考
下一篇:设计MyTime类 代码参考
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash