binder1st Sınıfı
İ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 bağlama lehine kullanım dışı bırakıldı ve C++17'de kaldırıldı.
Sözdizimi
template <class Operation>
class binder1st
: public unaryFunction <typename Operation::second_argument_type,
typename Operation::result_type>
{
public:
typedef typename Operation::argument_type argument_type;
typedef typename Operation::result_type result_type;
binder1st(
const Operation& binary_fn,
const typename Operation::first_argument_type& left);
result_type operator()(const argument_type& right) const;
result_type operator()(const argument_type& right) const;
protected:
Operation op;
typename Operation::first_argument_type value;
};
Parametreler
binary_fn
Bir tek işlev nesnesine dönüştürülecek ikili işlev nesnesi.
Sol
İkili işlev nesnesinin ilk bağımsız değişkeninin bağlanacağı değer.
Doğru
Uyarlanmış ikili nesnesinin bağımsız değişkeninin değeri, ikinci bağımsız değişkenin sabit değeriyle karşılaştırılır.
İade Değeri
İkili işlev nesnesinin ilk bağımsız değişkeninin soldaki değere bağlanmasından kaynaklanan birli işlev nesnesi.
Açıklamalar
Sınıf şablonu, içinde binary_fnop
ikili işlev nesnesinin bir kopyasını ve içinde value
soldaki bir kopyasını depolar. Üye işlevini operator()
döndüren op(value, right)
olarak tanımlar.
binary_fn türünde bir nesneyse ve c
sabitse, bind1st(binary_fn, c)
ile daha uygun bir eşdeğerdirbinder1st<Operation>(binary_fn, c)
.Operation
Daha fazla bilgi için bkz . bind1st.
Örnek
// functional_binder1st.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<int> v1;
vector<int>::iterator Iter;
int i;
for (i = 0; i <= 5; i++)
{
v1.push_back(5 * i);
}
cout << "The vector v1 = ( ";
for (Iter = v1.begin(); Iter != v1.end(); Iter++)
cout << *Iter << " ";
cout << ")" << endl;
// Count the number of integers > 10 in the vector
vector<int>::iterator::difference_type result1;
result1 = count_if(v1.begin(), v1.end(),
binder1st<less<int> >(less<int>(), 10));
cout << "The number of elements in v1 greater than 10 is: "
<< result1 << "." << endl;
// Compare use of binder2nd fixing 2nd argument:
// count the number of integers < 10 in the vector
vector<int>::iterator::difference_type result2;
result2 = count_if(v1.begin(), v1.end(),
binder2nd<less<int> >(less<int>(), 10));
cout << "The number of elements in v1 less than 10 is: "
<< result2 << "." << endl;
}
The vector v1 = ( 0 5 10 15 20 25 )
The number of elements in v1 greater than 10 is: 3.
The number of elements in v1 less than 10 is: 2.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin