Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wstępnie zdefiniowany obiekt funkcji, który wykonuje operację rozsyłania logicznego (operator||) na jego argumentach.
Składnia
template <class Type = void>
struct logical_or : public binary_function<Type, Type, bool>
{
bool operator()(const Type& Left, const Type& Right) const;
};
// specialized transparent functor for operator||
template <>
struct logical_or<void>
{
template <class T, class U>
auto operator()(T&& Left, U&& Right) const
-> decltype(std::forward<T>(Left) || std::forward<U>(Right));
};
Parametry
Typ, T, U
Dowolny typ obsługujący argument , który operator|| przyjmuje operandy określonych lub wywnioskowanych typów.
z lewej
Lewy operand operacji logicznego rozsyłania. Niespecjalizowany szablon przyjmuje argument odwołania lvalue typu Type. Wyspecjalizowany szablon wykonuje doskonałe przekazywanie argumentów referencyjnych lvalue i rvalue wywnioskowanego typu T.
po prawej
Prawy operand operacji logicznego rozsyłania. Niespecjalizowany szablon przyjmuje argument odwołania lvalue typu Type. Wyspecjalizowany szablon wykonuje doskonałe przekazywanie argumentów referencyjnych lvalue i rvalue wywnioskowanego typu U.
Wartość zwracana
Wynik .Left || Right Wyspecjalizowany szablon wykonuje doskonałe przekazywanie wyniku, który ma typ zwracany przez operator||element .
Uwagi
W przypadku typów zdefiniowanych przez użytkownika nie ma żadnych zwarć oceny operandu. Oba argumenty są oceniane przez operator||element .
Przykład
// functional_logical_or.cpp
// compile with: /EHsc
#include <deque>
#include <algorithm>
#include <functional>
#include <iostream>
int main( )
{
using namespace std;
deque <bool> d1, d2, d3( 7 );
deque <bool>::iterator iter1, iter2, iter3;
int i;
for ( i = 0 ; i < 7 ; i++ )
{
d1.push_back((bool)((rand() % 2) != 0));
}
int j;
for ( j = 0 ; j < 7 ; j++ )
{
d2.push_back((bool)((rand() % 2) != 0));
}
cout << boolalpha; // boolalpha I/O flag on
cout << "Original deque:\n d1 = ( " ;
for ( iter1 = d1.begin( ) ; iter1 != d1.end( ) ; iter1++ )
cout << *iter1 << " ";
cout << ")" << endl;
cout << "Original deque:\n d2 = ( " ;
for ( iter2 = d2.begin( ) ; iter2 != d2.end( ) ; iter2++ )
cout << *iter2 << " ";
cout << ")" << endl;
// To find element-wise disjunction of the truth values
// of d1 & d2, use the logical_or function object
transform( d1.begin( ), d1.end( ), d2.begin( ),
d3.begin( ), logical_or<bool>( ) );
cout << "The deque which is the disjuction of d1 & d2 is:\n d3 = ( " ;
for ( iter3 = d3.begin( ) ; iter3 != d3.end( ) ; iter3++ )
cout << *iter3 << " ";
cout << ")" << endl;
}
Original deque:
d1 = ( true true false false true false false )
Original deque:
d2 = ( false false false true true true true )
The deque which is the disjuction of d1 & d2 is:
d3 = ( true true false true true true true )