裹的功能,提供在包装功能的样板:
template<typename Container, typename Transform>
void transform_container(Container & container, Transform transform) {
std::transform(std::begin(container), std::end(container),
std::begin(container), /* requires output iterator */
transform);
}
template<typename T, typename Container>
auto inner_product_self(Container&& container, T initial) {
return std::inner_product(std::begin(container), std::end(container),
std::begin(container),
initial);
}
您的代码就变成了:
int main() {
std::vector<int> v(2);
std::itoa(std::begin(v), std::end(v), 0);
transform_container(v, [](auto i) { return i + 2; });
transform_container(v, [](auto i) { return i * 3; });
auto result = inner_product_self(container, 0);
std::cout << "result: " << result;
}
(Live on ideone)
你不拴面向对象编程!
如果它在任何地方,它会在[Boost :: range](http://www.boost.org/doc/libs/1_63_0/libs/range/doc/html/index.html) –
也,inner_product有两个范围:http://en.cppreference.com/w/cpp/algorithm/inner_product –
@MooingDuck,'boost :: algorithm :: join'就是我真正想要做的。 –