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, mit dem der arithmetische Negationsvorgang (unäres operator--Element) auf dem Argument ausgeführt wird.
Syntax
template <class Type = void>
struct negate : public unary_function<Type, Type>
{
Type operator()(const Type& Left) const;
};
// specialized transparent functor for unary operator-
template <>
struct negate<void>
{
template <class Type>
auto operator()(Type&& Left) const
-> decltype(-std::forward<Type>(Left));
};
Parameter
Typ
Jeder Typ, der ein operator--Element unterstützt, das einen Operanden des angegebenen oder abgeleiteten Typs akzeptiert.
Nach links
Der zu negierende Operand. Die spezielle Vorlage führt die perfekte Weiterleitung von lvalue- und rvalue-Bezugsargumenten des abgeleiteten Typs durch.
Rückgabewert
Das Ergebnis von -Left. Die spezielle Vorlage führt eine perfekte Weiterleitung des Ergebnisses durch, die den Typ aufweist, der von unär operator-zurückgegeben wird.
Beispiel
// functional_negate.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;
int main( )
{
vector <int> v1, v2 ( 8 );
vector <int>::iterator Iter1, Iter2;
int i;
for ( i = -2 ; i <= 5 ; i++ )
{
v1.push_back( 5 * i );
}
cout << "The vector v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
// Finding the element-wise negatives of the vector v1
transform ( v1.begin( ), v1.end( ), v2.begin( ), negate<int>( ) );
cout << "The negated elements of the vector = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
}
The vector v1 = ( -10 -5 0 5 10 15 20 25 )
The negated elements of the vector = ( 10 5 0 -5 -10 -15 -20 -25 )