首页 > 代码库 > c++ primer之10.1 泛型概述

c++ primer之10.1 泛型概述

在顺序容器中,没有定义可以满足用户(程序员)所需的更多功能接口,所以标准库定义了一组泛型算法,之所以称为“泛型的”,适用于不同类型。

泛型算法一般不直接操作容器,而是遍历迭代器的元素范围来进行操作。

标准库算法find:

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     cout << "Hello World!" << endl;
10 
11     int val = 42;\\要查找的值
12     vector<int> vec = {1, 32, 8, 42};
13     auto result = find( vec.cbegin(), vec.cend(), val );
14 
15     cout << "the value:" << val << ( result == vec.cend() ? " is not pressent" : " is pressent") << endl;
16 
17     return 0;
18 }

10.1 节练习

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <vector>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     vector<int> vec = { 1, 9, 4, 8, 5, 5 };
10     int val = 5;
11 
12     cout << "vec == 5 有: " << count( vec.begin(), vec.end(), val );
13 
14     return 0;
15 }

10.2 节练习

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <vector>
 4 #include <list>
 5 
 6 using namespace std;
 7 
 8 int main()
 9 {
10     cout << "Hello World!" << endl;
11 
12     list<string> listStr = { "xcd", "chuandong", "mmd" };
13     string strVal = "xcd";
14 
15     cout << count( listStr.begin(), listStr.end(), strVal );
16 
17     return 0;
18 }

关键概念:算法永远不会执行容器的操作

{

泛型算法本身不直接执行容器的操作,而是执行迭代器的操作,而迭代器执行容器的操作。

}

 

c++ primer之10.1 泛型概述