Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein vordefiniertes Funktionsobjekt, das den Modulusdivisionsvorgang (operator%) auf den Argumenten ausführt.
Syntax
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));
};
Parameter
Type, T, U
Jeder Typ, der ein operator%-Element unterstützt, das Operanden angegebener oder abgeleiteter Typen akzeptiert.
Nach links
Der linke Operand des Modulusvorgangs. Die nicht angegebene Vorlage verwendet ein lvalue-Bezugsargument vom Typ "Typ ". Die spezielle Vorlage führt die perfekte Weiterleitung von Lvalue- und Rvalue-Bezugsargumenten vom abgeleiteten Typ T durch.
Right
Der rechte Operand des Modulusvorgangs. Die nicht angegebene Vorlage verwendet ein lvalue-Bezugsargument vom Typ "Typ ". Die spezielle Vorlage führt die perfekte Weiterleitung von Lvalue- und Rvalue-Bezugsargumenten des abgeleiteten Typs U durch.
Rückgabewert
Das Ergebnis von Left % Right. Die spezialisierte Vorlage vervollkommnet die Weiterleitung des Ergebnisses mit dem von operator% zurückgegebenen Typs.
Hinweise
Das modulus-Funktionselement wird auf Ganzzahltypen für die grundlegenden Datentypen oder benutzerdefinierte Typen beschränkt, die operator% implementieren.
Beispiel
// 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 )