我知道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