Bagikan melalui


membagi Struct

Objek fungsi yang telah ditentukan sebelumnya yang melakukan operasi pembagian (operator/) pada argumennya.

Sintaks

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

// specialized transparent functor for operator/
template <>
struct divides<void>
{
  template <class T, class U>
  auto operator()(T&& Left, U&& Right) const
    -> decltype(std::forward<T>(Left)*/ std::forward<U>(Right));
};

Parameter

Jenis, T, U
Jenis yang mendukung operator/ yang mengambil operand dari jenis yang ditentukan atau disimpulkan.

Left
Operan kiri operasi pembagian. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe T yang disimpulkan.

Kanan
Operand kanan dari operasi pembagian. Templat yang tidak dispesialisasi mengambil argumen referensi lvalue jenis jenis. Templat khusus melakukan penerusan sempurna dari argumen referensi lvalue dan rvalue dari tipe U yang disimpulkan.

Tampilkan Nilai

Hasil dari Left / Right. Templat khusus melakukan penerusan hasil yang sempurna, yang memiliki jenis yang dikembalikan oleh operator/.

Contoh

// functional_divides.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( 7.0 * i );
   }

   int j;
   for ( j = 1 ; j <= 6 ; j++ )
   {
      v2.push_back( 2.0 * 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 quotients of the elements of v1 & v2
   transform ( v1.begin( ), v1.end( ), v2.begin( ), v3.begin ( ),
      divides<double>( ) );

   cout << "The element-wise quotients are: ( " ;
   for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
      cout << *Iter3 << " ";
   cout << ")" << endl;
}
The vector v1 = ( 0 7 14 21 28 35 )
The vector v2 = ( 2 4 6 8 10 12 )
The element-wise quotients are: ( 0 1.75 2.33333 2.625 2.8 2.91667 )