Aracılığıyla paylaş


modulus Yapısı

Bağımsız değişkenlerinde modül bölme işlemini (operator%) gerçekleştiren önceden tanımlanmış bir işlev nesnesi.

Sözdizimi

template <class Type = void>
struct modulus : public binary_function <Type, Type, Type>
{
    Type operator()(const Type& Left, const Type& Right) const;
};

// specialized transparent functor for operator%
template <>
struct modulus<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 destekleyen herhangi bir operator% tür.

Left
Modulus 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
Modulus işleminin sağ 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.

İade Değeri

sonucu.Left % Right Özelleştirilmiş şablon, tarafından operator%döndürülen türe sahip olan sonucun mükemmel iletilmesine sahiptir.

Açıklamalar

Functor modulus , temel veri türleri için tam sayı türleriyle veya uygulayan operator%kullanıcı tanımlı türler ile sınırlıdır.

Örnek

// functional_modulus.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>

using namespace std;

int main( )
{
   vector <int> v1, v2, v3 ( 6 );
   vector <int>::iterator Iter1, Iter2, Iter3;

   int i;
   for ( i = 1 ; i <= 6 ; i++ )
   {
      v1.push_back( 5 * i );
   }

   int j;
   for ( j = 1 ; j <= 6 ; j++ )
   {
      v2.push_back( 3 * j );
   }

   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 remainders of the elements of v1 & v2
   transform (v1.begin( ),  v1.end( ), v2.begin( ), v3.begin ( ),
      modulus<int>() );

   cout << "The element-wise remainders of the modular division\n are: ( " ;
   for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
      cout << *Iter3 << " ";
   cout << ")" << endl;
}
The vector v1 = ( 5 10 15 20 25 30 )
The vector v2 = ( 3 6 9 12 15 18 )
The element-wise remainders of the modular division
are: ( 2 4 6 8 10 12 )