Article: Q158233
Product(s): Microsoft C Compiler
Version(s): winnt:4.2
Operating System(s):
Keyword(s): _IK
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Standard C++ Library
- Microsoft Visual C++, 32-bit Enterprise Edition, version 4.2
- Microsoft Visual C++, 32-bit Professional Edition, version 4.2
-------------------------------------------------------------------------------
SUMMARY
=======
The sample code below illustrates how to use basic math STL functions plus,
minus, divides, times, and modulus in Visual C++.
MORE INFORMATION
================
Required Header
---------------
<functional>
Prototype
---------
template<class _TYPE>
struct plus : binary_function<_TYPE, _TYPE, _TYPE>
{
_TYPE operator()(const _TYPE& _X, const _TYPE& _Y) const
{return (_X + _Y); }
};
template<class _TYPE>
struct minus : binary_function<_TYPE, _TYPE, _TYPE>
{
_TYPE operator()(const _TYPE& _X, const _TYPE& _Y) const
{return (_X - _Y); }
};
template<class _TYPE>
struct times : binary_function<_TYPE, _TYPE, _TYPE>
{
_TYPE operator()(const _TYPE& _X, const _TYPE& _Y) const
{return (_X * _Y); }
};
template<class _TYPE>
struct divides : binary_function<_TYPE, _TYPE, _TYPE>
{
_TYPE operator()(const _TYPE& _X, const _TYPE& _Y) const
{return (_X / _Y); }
};
template<class _TYPE>
struct modulus : binary_function<_TYPE, _TYPE, _TYPE>
{
_TYPE operator()(const _TYPE& _X, const _TYPE& _Y) const
{return (_X % _Y); }
};
NOTE: The class/parameter names in the prototype may not match the version in the
header file. Some have been modified to improve readability. Consult your
product documentation for information on the binary_function structure.
Description
-----------
This sample uses a class derived from all 5 basic math structures: plus, minus,
times, divides, and modulus, using an integer as the templated operand.
Sample Code
-----------
////////////////////////////////////////////////////////////////
//
// Compile options needed: none
//
// mathfunc.cpp - Illustrating the basic STL math
// functions.
//
// Structures: plus<A> - Adds data type A object to
// a class object derived from plus.
// minus<A> - Subtracts data type A.
// times<A> - Multiplies object by data type A.
// divides<A> - Divides object by data type A.
// modulus<A> - Returns object modulo A.
//
// Written by Mark Hagen
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation.
// All rights reserved.
/////////////////////////////////////////////////////////////////
#include <functional>
using namespace std;
class MathOps : public plus<int>, public minus<int>,
public times<int>, public divides<int>,
public modulus<int>
{
public:
int value;
MathOps(){value=0;}
MathOps(int x){value=x;}
result_type operator+(second_argument_type add2)
{return value + add2;}
result_type operator-(second_argument_type sub2)
{return value - sub2;}
result_type operator*(second_argument_type mult2)
{return value * mult2;}
result_type operator/(second_argument_type div2)
{return value / div2;}
result_type operator%(second_argument_type mod2)
{return value % mod2;}
};
void main(void)
{
MathOps one,two,three,four,five,six;
cout << "Using MathOps class..." << endl ;
one = 18;
cout << "one = " << one << endl ;
two = one + 1;
cout << "two = one + 1 = " << two << endl ;
three = two - 2;
cout << "three = two - 2 = " << three << endl ;
four = three * 3;
cout << "four = three * 3 = " << four << endl ;
five = four / 4;
cout << "five = four / 4 = " << five << endl ;
six = five % 5;
cout << "six = five % 5 = " << six << endl ;
}
Program Output is:
Using MathOps class...
one = 18
two = one + 1 = 19
three = two - 2 = 17
four = three * 3 = 51
five = four / 4 = 12
six = five % 5 = 2
REFERENCES
==========
Visual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.
Additional query words: STL Sample plus minus divides times modulus
======================================================================
Keywords : _IK
Technology : kbVCsearch kbAudDeveloper kbVC420 kbVC32bitSearch kbVCLibrary
Version : winnt:4.2
Issue type : kbhowto
=============================================================================