<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ınf
üye işlevininT
işaretçisi olduğunda vet1
türündeT
bir nesne veya türündenT
türetilmiş bir nesneye başvuru ya da türünden türetilmişT
bir nesneye başvurudur.((*t1).*f)(t2, ..., tN)
whenf
sınıfınınT
üye işlevinin işaretçisidir vet1
önceki öğede açıklanan türlerden biri değildir.t1.*f
N == 1 olduğunda vef
bir sınıfınT
üye verilerinin işaretçisi olduğunda vet1
türündekiT
bir nesne veya türündekiT
bir nesneye başvuru ya da türündenT
türetilen bir nesneye başvuru olduğunda.(*t1).*f
when N == 1 vef
bir sınıfınT
üye verilerine işaretçidir vet1
ö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 R
dö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ırT
.Üye işlevinin işaretçisi ise
T
,result_type
dönüş türü için bir eş anlamlıdırT
.üye türüne sahip bir sınıf türü
result_type
iseT
,result_type
içinT::result_type
bir eş anlamlıdır.Aksi takdirde, üyesi
result_type
yoktur.
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 bind belirli 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