Aracılığıyla paylaş


<functional>

Functors olarak da bilinen işlev nesnelerinin ve bunların bağlayıcılarının oluşturmasına yardımcı olan C++ Standart Kitaplığı işlevlerini tanımlar. İşlev nesnesi, öğesini tanımlayan operator()türde bir nesnedir. İşlev nesnesi bir işlev işaretçisi olabilir, ancak genellikle bir işlev çağrısı sırasında erişilebilen ek bilgileri depolamak için kullanılır.

Gereksinimler

Üst bilgi:<işlevsel>

Ad alanı: std

Açıklamalar

Algoritmalar iki tür işlev nesnesi gerektirir: birli ve ikili. Birli işlev nesneleri bir bağımsız değişken gerektirir ve ikili işlev nesneleri iki bağımsız değişken gerektirir. İşlev nesnesi ve işlev işaretçileri bir algoritmanın koşulu olarak geçirilebilir, ancak işlev nesneleri de uyarlanabilir ve C++ Standart Kitaplığının kapsamını, esnekliğini ve verimliliğini artırır. Örneğin, bir algoritmaya geçirilmeden önce bir işleve bağlanması gereken bir değer varsa, işlev işaretçisi kullanılamaz. İşlev bağdaştırıcıları, işlev işaretçilerini bir değere bağlanabilen uyarlanabilir işlev nesnelerine dönüştürür. Üst bilgi <işlevi> , üye işlevlerin uyarlanabilir işlev nesneleri olarak çağrılmasına olanak sağlayan üye işlev bağdaştırıcılarını da içerir. İşlevler, bağımsız değişkenlerini ve dönüş türlerini belirten iç içe tür bildirimlerine sahipse uyarlanabilir. İşlev nesneleri ve bağdaştırıcıları, C++ Standart Kitaplığı'nın mevcut uygulamaları yükseltmesine ve kitaplığı C++ programlama ortamıyla tümleştirmesine yardımcı olur.

İşlev nesnelerinin işlevsel> olarak <uygulanması, standart işlev nesnelerinin uzmanlıkları olan ve şablon parametresi almayan saydam işleç funktörlerini içerir ve işlev bağımsız değişkenlerinin mükemmel iletmesini ve sonucun mükemmel döndürülmesi işlemini gerçekleştirir. Bu şablon özelleştirmeleri aritmetik, karşılaştırma, mantıksal ve bit düzeyinde işleç funktörlerini çağırırken bağımsız değişken türlerini belirtmenizi gerektirmez. Aritmetik, karşılaştırma, mantıksal veya bit düzeyinde işleçleri kendi türleriniz veya heterojen tür birleşimleri için aşırı yükleyip saydam işleç functor'larını işlev bağımsız değişkenleri olarak kullanabilirsiniz. Örneğin, MyType türünüz uygularsa operator<türünü açıkça belirtmek sort(my_collection.begin(), my_collection.end(), less<MyType>())yerine öğesini çağırabilirsinizsort(my_collection.begin(), my_collection.end(), less<>()).

C++11, C++14 ve C++17'ye aşağıdaki özellikler eklenir:

  • Çağrı imzası, sıfır veya daha fazla bağımsız değişken türünün parantez içinde virgülle ayrılmış listesinin ardından gelen dönüş türünün adıdır.

  • Çağrılabilen tür, işlev işaretçisi, üye işlev işaretçisi, üye veri işaretçisi veya nesneleri işlev çağrısı işlecinin hemen solunda görünebilen bir sınıf türüdür.

  • Çağrılabilen nesne, çağrılabilen türde bir nesnedir.

  • Çağrı sarmalayıcı türü, çağrılabilen bir nesneyi tutan ve bu nesneye iletilen bir çağrı işlemini destekleyen bir türdür.

  • Çağrı sarmalayıcı , çağrı sarmalayıcı türünde bir nesnedir.

  • Hedef nesne, çağrı sarmalayıcı nesnesi tarafından tutulan çağrılabilen nesnedir.

Sahte işlev INVOKE(f, t1, t2, ..., tN) aşağıdakilerden biri anlamına gelir:

  • (t1.*f)(t2, ..., tN) sınıfının f üye işlevinin T işaretçisi olduğunda ve t1 türünde T bir nesne veya türünden T türetilmiş bir nesneye başvuru ya da türünden türetilmiş Tbir nesneye başvurudur.

  • ((*t1).*f)(t2, ..., tN) when f sınıfının T üye işlevinin işaretçisidir ve t1 önceki öğede açıklanan türlerden biri değildir.

  • t1.*f N == 1 olduğunda ve f bir sınıfın T üye verilerinin işaretçisi olduğunda ve t1 türündeki T bir nesne veya türündeki T bir nesneye başvuru ya da türünden Ttüretilen bir nesneye başvuru olduğunda.

  • (*t1).*f when N == 1 ve f bir sınıfın T üye verilerine işaretçidir ve t1 önceki öğede açıklanan türlerden biri değildir.

  • f(t1, t2, ..., tN) diğer tüm durumlarda.

sözde işlevi INVOKE(f, t1, t2, ..., tN, R) örtük olarak olarak olarak Rdönüştürülür anlamına gelirINVOKE(f, t1, t2, ..., tN).

Çağrı sarmalayıcı zayıf bir sonuç türüne sahipse, üye türünün türü result_type sarmalayıcının hedef nesnesinin türüne T göre aşağıdaki gibi temel alır:

  • bir işlev işaretçisi ise T , result_type dönüş türü için bir eş anlamlıdır T.

  • Üye işlevinin işaretçisi ise T , result_type dönüş türü için bir eş anlamlıdır T.

  • üye türüne sahip bir sınıf türü result_typeiseT, result_type için T::result_typebir eş anlamlıdır.

  • Aksi takdirde, üyesi result_typeyoktur.

Her çağrı sarmalayıcının bir taşıma oluşturucu ve bir kopya oluşturucu vardır. Basit çağrı sarmalayıcı, atama işleci olan ve kopya oluşturucu, taşıma oluşturucu ve atama işleci özel durum oluşturmayan bir çağrı sarmalayıcıdır. İletme çağrısı sarmalayıcı , rastgele bir bağımsız değişken listesi kullanılarak çağrılabilen ve bağımsız değişkenleri sarmalanmış çağrılabilir nesneye başvuru olarak teslim eden bir çağrı sarmalayıcıdır. Tüm rvalue bağımsız değişkenleri rvalue başvuruları olarak, lvalue bağımsız değişkenleri ise lvalue başvuruları olarak teslim edilir.

Üyeler

Sınıflar

Veri Akışı Adı Açıklama
bad_function_call Bir işlev nesnesi üzerindeki çağrısının nesne boş olduğundan başarısız olduğunu belirtmek için operator() oluşan bir özel durumu açıklayan bir sınıf.
binary_negate Belirtilen ikili işlevin dönüş değerini engelleyen bir üye işlevi sağlayan sınıf şablonu.
(C++17'de kullanım dışıdır.)
ciltçi1st İkili işlevin ilk bağımsız değişkenini belirtilen bir değere bağlayarak ikili işlev nesnesini tek bir işlev nesnesine dönüştüren bir oluşturucu sağlayan bir sınıf şablonu.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
binder2nd İkili işlevin ikinci bağımsız değişkenini belirtilen bir değere bağlayarak ikili işlev nesnesini tek bir işlev nesnesine dönüştüren bir oluşturucu sağlayan sınıf şablonu.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
boyer_moore_horspool_searcher
boyer_moore_searcher
const_mem_fun_ref_t Başvuru bağımsız değişkeniyle başlatıldığında bağımsız değişken almayan bir const üye işlevinin tek bir işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
const_mem_fun_t İşaretçi bağımsız değişkeniyle başlatıldığında bağımsız değişken almayan bir const üye işlevinin tek bir işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
const_mem_fun1_ref_t Bir başvuru bağımsız değişkeniyle başlatıldığında tek bir bağımsız değişken alan bir const üye işlevinin ikili işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
const_mem_fun1_t tek bir bağımsız değişkeni alan bir const üye işlevinin, işaretçi bağımsız değişkeniyle başlatıldığında ikili işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
default_searcher
fonksiyon Çağrılabilen nesneyi sarmalayan bir sınıf.
Karma Bir değer için karma kodu hesaplayan bir sınıf.
is_bind_expression çağrılarak bindbelirli bir türün oluşturulıp oluşturulmadığını test eden bir sınıf.
is_placeholder Belirli bir türün yer tutucu olup olmadığını test eden bir sınıf.
mem_fun_ref_t Başvuru bağımsız değişkeniyle başlatıldığında bağımsız değişken almayan bir non_const üye işlevinin tek bir işlev nesnesi olarak çağrılmasına izin veren bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
mem_fun_t İşaretçi bağımsız değişkeniyle başlatıldığında bağımsız değişken almayan bir non_const üye işlevinin tek bir işlev nesnesi olarak çağrılmasına izin veren bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
mem_fun1_ref_t Bir başvuru bağımsız değişkeniyle başlatıldığında tek bir non_const bağımsız değişken alan bir üye işlevinin ikili işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
mem_fun1_t bir işaretçi bağımsız değişkeniyle başlatıldığında tek bir non_const bağımsız değişken alan bir üye işlevinin ikili işlev nesnesi olarak çağrılmasını sağlayan bir bağdaştırıcı sınıfı.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
pointer_to_binary_function İkili işlev işaretçisini uyarlanabilir bir ikili işleve dönüştürür.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
pointer_to_unary_function Birli işlev işaretçisini uyarlanabilir bir birli işleve dönüştürür.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
reference_wrapper Başvuru sarmalayan bir sınıf.
unary_negate Belirtilen bir tekli işlevin dönüş değerini engelleyen bir üye işlevi sağlayan sınıf şablonu.
(C++17'de kullanım dışıdır.)

İşlevler

Veri Akışı Adı Açıklama
bağlamak Bağımsız değişkenleri çağırılabilir bir nesneye bağlar.
bind1st İkili işlevin ilk bağımsız değişkenini belirtilen bir değere bağlayarak ikili işlev nesnesini tek bir işlev nesnesine dönüştürmek için bir bağdaştırıcı oluşturan yardımcı şablon işlevi.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
bind2nd İkili işlevin ikinci bağımsız değişkenini belirtilen bir değere bağlayarak ikili işlev nesnesini tek bir işlev nesnesine dönüştürmek için bir bağdaştırıcı oluşturan yardımcı şablon işlevi.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
bit_and İki parametrenin bit düzeyinde AND (ikili operator&) değerini döndürür.
bit_not Parametresinin bit düzeyinde tamamlayıcısını (operator~) döndürür.
(C++14'te eklendi.)
bit_or İki parametrenin bit düzeyinde OR (operator|) değerini döndürür.
bit_xor İki parametrenin bit düzeyinde XOR'sini (operator^) döndürür.
cref Bağımsız değişkenden sabit reference_wrapper oluşturur.
çağırmak
mem_fn Basit bir çağrı sarmalayıcı oluşturur.
mem_fun İşaretçi bağımsız değişkenleriyle başlatıldığında üye işlevler için işlev nesnesi bağdaştırıcıları oluşturmak için kullanılan yardımcı şablon işlevleri.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
mem_fun_ref Başvuru bağımsız değişkenleriyle başlatıldığında üye işlevleri için işlev nesnesi bağdaştırıcıları oluşturmak için kullanılan yardımcı şablon işlevi.
not1 Birli koşulun tamamlayıcısını döndürür.
(C++17'de kullanım dışıdır.)
not2 İkili koşulun tamamlayıcısını döndürür.
(C++17'de kullanım dışıdır.)
not_fn İşlev nesnesinin sonucunun tamamlayıcısını döndürür.
(C++17'de eklendi.)
ptr_fun Sırasıyla birli ve ikili işlev işaretçilerini birli ve ikili uyarlanabilir işlevlere dönüştürmek için kullanılan yardımcı şablon işlevi.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
ref Bağımsız değişkenden bir reference_wrapper oluşturur.
değiş tokuş etmek İki function nesneyi değiştirir.

Yapılar

Veri Akışı Adı Açıklama
binary_function İkili işlev nesnesi sağlayan türetilmiş sınıf tarafından devralınabilecek türleri tanımlayan boş bir temel sınıf.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)
Böler sınıfı, belirtilen değer türündeki öğeler üzerinde bölme işleminin aritmetik işlemini gerçekleştiren önceden tanımlanmış bir işlev nesnesi sağlar.
equal_to Belirtilen türdeki bir değerin bu türdeki başka bir değere eşit olup olmadığını test eden ikili koşul.
greater Belirtilen türdeki bir değerin bu türdeki başka bir değerden büyük olup olmadığını test eden ikili koşul.
greater_equal Belirtilen türdeki bir değerin bu türdeki başka bir değerden büyük veya buna eşit olup olmadığını test eden ikili koşul.
less Belirtilen türdeki bir değerin bu türdeki başka bir değerden küçük olup olmadığını test eden ikili koşul.
less_equal Belirtilen türdeki bir değerin o türdeki başka bir değere eşit veya daha küçük olup olmadığını test eden ikili koşul.
logical_and sınıfı, belirtilen değer türündeki öğeler üzerinde bağlamanın mantıksal işlemini gerçekleştiren ve sonucun doğruluğunu veya yanlışlığını test eden önceden tanımlanmış bir işlev nesnesi sağlar.
logical_not sınıfı, belirtilen değer türündeki öğeler üzerinde olumsuzlamanın mantıksal işlemini gerçekleştiren ve sonucun doğruluğunu veya yanlışlığını test eden önceden tanımlanmış bir işlev nesnesi sağlar.
logical_or sınıfı, belirtilen değer türündeki öğeler üzerinde ayrıştırma mantıksal işlemini gerçekleştiren ve sonucun doğru veya hatalı olup olmadığını test eden önceden tanımlanmış bir işlev nesnesi sağlar.
eksi sınıfı, belirtilen değer türündeki öğeler üzerinde çıkarma işleminin aritmetik işlemini gerçekleştiren önceden tanımlanmış bir işlev nesnesi sağlar.
Modülü sınıfı, belirtilen değer türündeki öğeler üzerinde modül aritmetik işlemini gerçekleştiren önceden tanımlanmış bir işlev nesnesi sağlar.
Çarpar sınıfı, belirtilen değer türündeki öğelerde çarpmanın aritmetik işlemini gerçekleştiren önceden tanımlanmış bir işlev nesnesi sağlar.
Negate sınıfı, bir öğe değerinin negatifini döndüren önceden tanımlanmış bir işlev nesnesi sağlar.
not_equal_to Belirtilen türdeki bir değerin bu türdeki başka bir değere eşit olup olmadığını test eden ikili koşul.
artı sınıfı, belirtilen değer türündeki öğeler üzerinde toplama aritmetik işlemini gerçekleştiren önceden tanımlanmış bir işlev nesnesi sağlar.
unary_function Birli işlev nesnesi sağlayan türetilmiş sınıf tarafından devralınabilecek türleri tanımlayan boş bir temel sınıf.
(C++11'de kullanım dışı, C++17'de kaldırıldı.)

Nesneler

Veri Akışı Adı Açıklama
_1.._M Değiştirilebilir bağımsız değişkenler için yer tutucular.

İşleçler

Veri Akışı Adı Açıklama
operator== Çağrılabilen nesnelerin eşitlik karşılaştırmasını izin verme.
operator!= Çağrılabilen nesnelerin eşitsizlik karşılaştırmasını izin verme.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu