C++ Primer 第十章 10.1 泛型算法概述 练习和总结

10.1泛型算法概述

C++标准库为容器提供的操作只有最基本的增加和删除和修改,但是我们往往需要对容器中的元素进行搜索、排序等操作。

C++没有为每个容器都单独定义这些操作,而是定义一系列的泛型算法。

所谓的泛型算法就是,算法的执行不依赖于具体的容器,这套操作是通用的。

泛型算法定义在algorithm和numeric头文件中,其中numeric文件定义的都是和数值相关的算法。

泛型算法往往需要传入一个容器的迭代器范围,通过操纵迭代器对范围内的元素完成相关的运算,因此泛型算法并不关心数据属于哪一个容器

这里说的迭代器范围就是两个迭代器,也可以是两个指针。

但是泛型算法的某一些操作需要容器内元素的支持,比如比较大小,判断是否等于,这都需要调用容器内元素的运算符。

以下的代码是一个调用algorithm中的count,来统计容器中某一个指定元素的数量,在这个算法中,就需要用到容器内元素的==运算符。

vector<int> vec = {1,2,3,2134,3214,123,4,123,321,312,3,123,12,3,12,31,23,12};
	int ival = 123;
	cout<<std::count(vec.begin(),vec.end(),ival)<<endl;
	vector<string> str_vec = {"123","123","312","123","123"};
	cout << std::count(str_vec.begin(),str_vec.end(),"123") << endl;

注意,泛型算法永远不会执行容器的操作。它可能改变容器内部元素的顺序,但是不会直接删除和增加元素。

发布了54 篇原创文章 · 获赞 6 · 访问量 3320

猜你喜欢

转载自blog.csdn.net/zengqi12138/article/details/104281670