C++ STL框架

2020-03-29 16:00:40来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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类 代码参考