初步感受一下泛型算法---以accumulate作用于内置数组、vector和list为例

73 篇文章 32 订阅

       我们已经对C++ STL有一点了解了, 比如vector, list等等, 但是, 这些标准数据结构定义的操作是非常有限的,当然啦, 内置数组的操作也很少。 假设现在有这样一个需求, 要求内置数组的元素和, 求vector中的元素和, 求list中的元素和, 难道我们要搞三个算法吗? 非也, 我们可以引进泛型算法。 什么叫泛型算法呢? 其实, 泛型算法独立于特定的容器, 是对数据结构类型的抽象, 也就是说, 我不管你数据结构是咋样的, 我这个算法能够通用。

       下面, 我们来看看非常简单的一个例子, 以便感受一下泛型算法:

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <numeric> // 泛型算法函数accumulate
using namespace std;

int main()
{
	int a[10] = {0};
	int i = 1;
	for(i = 0; i < 10; i++)
	{
		a[i] = i + 1;
	}

	cout << accumulate(a, a + 10, 0) << endl; // 针对内置数组


	vector<int> v;
	for(i = 0; i < 10; i++)
	{
		v.push_back(i + 1);
	}

	cout << accumulate(v.begin(), v.end(), 0) << endl;  // 针对C++ STL vector

	list<int> L;
	for(i = 0; i < 10; i++)
	{
		L.push_back(i + 1);
	}

	cout << accumulate(L.begin(), L.end(), 0) << endl;  // 针对C++ STL list

	return 0;
}
        我们看到, 无论是对于内置数组, 还是vector, 还是list, 我们都是用的accumulate这一个函数, 这就是所谓的泛型算法(函数)。 通过本例, 我们可以感知到泛型算法的魅力和威力。 以后, 我们还会对泛型算法作更多的介绍, 让我们拭目以待。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值