plus Yapısı
Bağımsız değişkenlerinde toplama işlemini (ikili operator+
) gerçekleştiren önceden tanımlanmış bir işlev nesnesi.
Sözdizimi
template <class Type = void>
struct plus : public binary_function <Type, Type, Type>
{
Type operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator+
template <>
struct plus<void>
{
template <class T, class U>
auto operator()(T&& Left, U&& Right) const
-> decltype(std::forward<T>(Left) + std::forward<U>(Right));
};
Parametreler
Tür, T, U
Belirtilen veya çıkarsanan türlerin işlenenlerini alan bir ikiliyi operator+
destekleyen bir tür.
Left
Ekleme işleminin sol işleneni. Belirtilmemiş şablon, Tür türünde bir lvalue başvuru bağımsız değişkenini alır. Özelleştirilmiş şablon, T türünde lvalue ve rvalue başvuru bağımsız değişkenlerinin mükemmel bir şekilde iletilmesine neden olur.
Right
Toplama işleminin doğru işleneni. Belirtilmemiş şablon, Tür türünde bir lvalue başvuru bağımsız değişkenini alır. Özelleştirilmiş şablon, çıkarılmıştır türü U olan lvalue ve rvalue başvuru bağımsız değişkenlerinin mükemmel iletilmesine yöneliktir.
Dönüş Değeri
sonucu.Left + Right
Özelleştirilmiş şablon, ikili operator+
tarafından döndürülen türe sahip olan sonucun mükemmel iletilmesine sahiptir.
Örnek
// functional_plus.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
int main( )
{
vector <double> v1, v2, v3 ( 6 );
vector <double>::iterator Iter1, Iter2, Iter3;
int i;
for ( i = 0 ; i <= 5 ; i++ )
v1.push_back( 4 * i );
int j;
for ( j = 0 ; j <= 5 ; j++ )
v2.push_back( -2.0 * j - 4 );
cout << "The vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
cout << "The vector v2 = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
// Finding the element-wise sums of the elements of v1 & v2
transform (v1.begin( ), v1.end( ), v2.begin( ), v3.begin ( ), plus<double>( ) );
cout << "The element-wise sums are: ( " ;
for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
cout << *Iter3 << " ";
cout << ")" << endl;
}
The vector v1 = ( 0 4 8 12 16 20 )
The vector v2 = ( -4 -6 -8 -10 -12 -14 )
The element-wise sums are: ( -4 -2 0 2 4 6 )