Gerçekte ne tür bir std::function
örneğinin içerdiğini anlamıyorum.Std :: function by-value veya (rvalue) -reference ile mi geçmeliyim?
Değere veya referansa göre iletmek daha mı etkili?
Aşağıdaki örneklerde performans etkileri nelerdir?
tarafından değeri:
rvalue-referanslavoid printStats(std::function<void(const char *)> printer);
. . .
std::string tmp;
printStats([&tmp](const char * msg){ tmp += msg; });
:
void printStats(std::function<void(const char *)>&& printer);
. . .
std::string tmp;
printStats([&tmp](const char * msg){ tmp += msg; });
Referans veya referans değerleriyle bas komutunu mu demek istediniz? Başlığınız başka bir şeyden başka bir şey söylüyor. rvalue referans ve lvalue referansı farklı çalışır. – NathanOliver
Bence basit cevap, değere göre, ancak bilmediğiniz durumda: [std :: function' üzerinden şablonlar ne zaman kullanılır] (http://stackoverflow.com/questions/14677997/stdfunction-vs-template – Maikel
Bir 'std :: function'un kopyalanması genellikle bir dinamik bellek ayırma gerektirir, bu nedenle biraz pahalıdır ve bu nedenle referans olarak geçirilmelidir. – nwp