1
我已經寫了我自己的撰寫方法,它可以爲PODs工作正常,如何優化這個處理用戶定義的類型,這是昂貴的複製?C++功能組合 - 撰寫方法優化
#include <iostream>
template<typename T, typename U, typename V>
std::function<V(T&&)> compose(std::function<V(U)> f, std::function<U(T)> g)
{
std::function<V(T&&)> result = [&](T&& value){
return f(g(value));
};
return result;
}
int main(int argc, const char * argv[])
{
std::function<int(int)> f = [](int v){ return v + 1;};
std::function<int(int)> g = [](int v){ return v + 2;};
std::function<int(int)> h = compose(f, g);
std::cout << "compose(f,g): " << (h(5)) << std::endl;
return 0;
}
布萊爾
POD!=昂貴的複製。一些POD是巨大的,一些用戶定義的類型可以非常便宜地複製(例如,只有一個整數),並且一些用戶定義的類型拷貝很貴,但移動起來很便宜。所以或許一個更好的問題是:我如何選擇(可能)最快速度傳遞給定的類型,我想我以前見過。 – delnan
可能的重複的[我可以讓C++編譯器決定是傳遞值還是傳遞引用?](http://stackoverflow.com/questions/13408423/can-i-let-the-c-編譯器決定-是否對通過按值-或通按引用) – delnan