我知道std::inner_product
算法会遇到问题,如果你正在处理两个不同大小的数组。是否有另一种标准库算法可以处理不同大小的数组,例如:通过自动使用两个数组中的较小者?替代std :: inner_product算法?
2
A
回答
3
不难实现一个。
template <class InputIterator1, class InputIterator2, class T>
T inner_product (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2, T init)
{
for (; first1 != last1 && first2 != last2; ++first1, ++first2)
{
init += (*first1)*(*first2);
}
return init;
}
+1
我认为你应该返回一个三倍的计算值和两个最终的迭代器'first1','first2'(因为这是可能不可能或昂贵的信息,例如对于输出或不是RandomAccess迭代器)。 – dyp
+0
这里是我最终做的:double SomeClass :: SomeFunction(std :: vector < double >&vector1){if(vector1.size()
+0
@ user2418536这也适用。 –
相关问题
- 1. std :: inner_product with omp
- 2. 内联的std :: inner_product
- 3. 使用std :: inner_product时的内积为零
- 4. 替代算法
- 5. std :: initializer_list替代
- 6. inner_product and complex vectors
- 7. 用std :: array代替[]
- 8. 替代std :: this_thread :: sleep_for()
- 9. 替代std :: istream :: ignore
- 10. C++:替代'std :: is_fundamental'?
- 11. C++ 98替代std :: stoul?
- 12. WaitForMultipleObjects替代与STD ::线程?
- 13. 用std :: set替代BOOST_FOREACH?
- 14. std :: C的替代矢量
- 15. 在我自己的课上使用std :: inner_product
- 16. C++的std ::变换替代由指数
- 17. 使用std :: swap代替'='赋值运算符
- 18. std :: list和std :: map的常用算法?
- 19. 解决方案的C++替代算法
- 20. Neurolab中的Levenberg-Marquardt算法替代
- 21. java替代备份旋转算法
- 22. 遗传算法和替代密码
- 23. 高效算法代替循环
- 24. 替代调度程序/算法
- 25. 用std/boost算法替换C++ while循环
- 26. 算法:合并的std :: unordered_maps
- 27. lexical_cast的替代<T>(std :: string)
- 28. 替换算法
- 29. 使用boost :: fast_pool_allocator代替std :: allocator
- 30. 替代std :: atomic_store(shared_ptr)为GCC <= 4.9?
不知道,但它不会很难实现。 – MattG
如何在函数调用之前使用'if'来自己选择较小的尺寸? – deviantfan
@deviantfan如果你没有RandomAccessIterator,搞清楚范围的大小可能是非常低效的,如果你有InputIterator,则不可能。 – Praetorian