C++ STL transform()函数如何详细使用和深入理解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2274个文字,预计阅读时间需要10分钟。
pythondef transform(sequence): result=[] for element in sequence: # Apply some transformation to the element transformed=element + 1 result.append(transformed) return result
Example usagesequence=[1, 2, 3, 4, 5]transformed_sequence=transform(sequence)print(transformed_sequence)
transform() 可以将函数应用到序列的元素上,并将这个函数返回的值保存到另一个序列中,它返回的迭代器指向输出序列所保存的最后一个元素的下一个位置。这个算法有一个版本和 for_each() 相似,可以将一个一元函数应用到元素序列上来改变它们的值,但这里有很大的区别。for_each() 中使用的函数的返回类型必须为 void,而且可以通过这个函数的引用参数来修改输入序列中的值;而 transform() 的二元函数必须返回一个值,并且也能够将应用函数后得到的结果保存到另一个序列中。
不仅如此,输出序列中的元素类型可以和输入序列中的元素类型不同。对于 for_each(),函数总是会被应用序列的元素上,但对于 transform(),这一点无法保证。
第二个版本的 transform() 允许将二元函数应用到两个序列相应的元素上,但先来看一下如何将一元函数应用到序列上。
本文共计2274个文字,预计阅读时间需要10分钟。
pythondef transform(sequence): result=[] for element in sequence: # Apply some transformation to the element transformed=element + 1 result.append(transformed) return result
Example usagesequence=[1, 2, 3, 4, 5]transformed_sequence=transform(sequence)print(transformed_sequence)
transform() 可以将函数应用到序列的元素上,并将这个函数返回的值保存到另一个序列中,它返回的迭代器指向输出序列所保存的最后一个元素的下一个位置。这个算法有一个版本和 for_each() 相似,可以将一个一元函数应用到元素序列上来改变它们的值,但这里有很大的区别。for_each() 中使用的函数的返回类型必须为 void,而且可以通过这个函数的引用参数来修改输入序列中的值;而 transform() 的二元函数必须返回一个值,并且也能够将应用函数后得到的结果保存到另一个序列中。
不仅如此,输出序列中的元素类型可以和输入序列中的元素类型不同。对于 for_each(),函数总是会被应用序列的元素上,但对于 transform(),这一点无法保证。
第二个版本的 transform() 允许将二元函数应用到两个序列相应的元素上,但先来看一下如何将一元函数应用到序列上。

