c++ - Objek fungsi generik.
淡淡烟草味
淡淡烟草味 2017-05-16 13:22:50
0
3
867

Saya baru sahaja melihat sekeping kod ini apabila saya melihat fungsi salinan analisis kod sumber stl

template<class InputIterator,class OutputIterator>
inline OutputIterator copy(InputIterator first,InputIterator last,OutputIterator result)
{
    return __copy_dispatch<InputIterator,OutputIterator>()(fist,last,result);//这是个函数
}

//这是完全泛化的的版本。
template <class InputIterator,class OutputIterator>
struct __copy_dispatch
{
    OutputIterator operator()(InputIterator first,InputIterator last,OutputIterator result)
    {
        return __copy(first,last,result,iterator_category(first));
    }    
};

__copy_dispatch ini ialah struct dengan operator yang terlebih muatan () Apabila dipanggil dalam salinan, ia terus

__copy_dispatch<InputIterator,OutputIterator>()(fist,last,result);

Secara langsunggunakan struct ini untuk memanggil operator (), tetapi tidak menggunakan objek stuct.

Adakah ini okay? Saya dengan cepat melihat melalui c++ primer dan tidak dapat mencari jawapannya.
Tolong bantu saya menjawab soalan ini. terima kasih, terima kasih.

淡淡烟草味
淡淡烟草味

membalas semua(3)
習慣沉默
__copy_dispatch<InputIterator,OutputIterator>()

Ini ialah kelas panggilan

__copy_dispatch<InputIterator,OutputIterator>
Pembina lalai

, fungsinya adalah untuk menjana objek sementara. Seterusnya

(fist,last,result)
Fungsi

adalah untuk memanggil operator() pada objek sementara ini dengan pertama, terakhir dan hasil sebagai parameter sebenar.

刘奇

Menggunakan struct ini, operator () dipanggil Ini adalah maksud functor. Fungsinya di sini adalah untuk mencipta objek tanpa nama

習慣沉默

Sebenarnya, lambda juga mencipta kelas yang membebankan operator() untuk mencapai kesan functor.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!