C++ 学习记录
程序员文章站
2022-07-09 21:46:43
...
Generic Algorithm
泛型算法存在的意义在于,在 cpp 中我们可以直接使用cpp自带的数据结构而不是重新去创建自己的结构,而cpp根据它自带的结构设计好了算法可以直接使用,减小了程序编写的难度,是个非常好的工具。
需要注意的几点
- 泛型算法只操作iterator而不是container,所以不会改变container的大小
算法有很多但是结构只有5种:
-
alg(beg, end, other args)
;
这一种最典型的就是find(v.begin(), v.end(), value )
,find( )
返回的是一个iterator,通过比较返回值和container的尾即.end( ),如果没找到这两个就相等。如果找到了就返回指向第一个出现这个值的iterator。同样也可以对数据进行查找,返回的是pointer。// sum the elements in vec starting the summation with the value 0 int sum = accumulate(vec.cbegin(), vec.cend(), 0);
accumulate( )
也是这种类型的算法,它的第三个输入决定了它的返回类型和相加的初始值。 -
alg(beg, end, dest, other args);
-
alg(beg, end, beg2, other args);
这种是输入一个sequence的开始和结束,然后输入第二个sequence的开始,这种形式会假设第二个sequence至少和第一个sequence一样长// roster2 should have at least as many elements as roster1 equal(roster1.cbegin(), roster1.cend(), roster2.cbegin(),pred);
这个
equal( )
返回的返回值是boolean类型,比较两个sequence是不是相等,默认用==,可以用pred来判断。 -
alg(beg, end, beg2, end2, other args);