Help and Support
 

powered byLive Search

STL Sample for the unary_functi

Retired KB ArticleThis article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Article ID:158232
Last Review:November 18, 2003
Revision:2.0
This article was previously published under Q158232
On This Page

SUMMARY

The sample code below illustrates how to use the unary_function STL structure in Visual C++.

Back to the top

MORE INFORMATION

Required Header

   <functional>
				

Back to the top

Prototype

   template<class _A, class _R>
   struct unary_function
   {
     typedef _A argument_type;
     typedef _R result_type;
   };
				
NOTE: The class/parameter names in the prototype may not match the version in the header file. Some have been modified to improve readability.

Back to the top

Description

unary_function is used as a base class to allow us to better define operator functions in the following format:
   result_type classname::operatorX(argument_type)
				

Back to the top

Sample Code

//////////////////////////////////////////// 
// 
// Compile options needed: none
// 
// Structure used:
//       unary_function<int, float> - allows us
//       to write operator functions accepting an
//       integer and returning floats.
// 
// Written by Mark Hagen
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation.
// All rights reserved.
//////////////////////////////////////////// 

#include <functional>
#include <iostream>
using namespace std;

/* derive class from unary_function in order to use it */ 

class unary_test : public unary_function<int,float>
{
public:
  float value;
  unary_test(){value=10.0;}
  unary_test(float x){value=x;}
  result_type operator*(argument_type x);
  result_type operator-(argument_type x);
};

/* You can now easily create operators that accept */ 
/* an int and return a float.                     */ 

unary_test::result_type unary_test::operator*(unary_test::argument_type x)
{
  value*=x;
  cout << "New value after * is " << value << endl ;
  return value;
}

unary_test::result_type unary_test::operator-(unary_test::argument_type x)
{
  value-+(float)x;
  cout << "New value after minus is " << value << endl ;

  return value;
}

void main(void)
{
  unary_test item;
  unary_test item2(18.0);

  cout << "Begin" << endl ;
  cout.setf(ios::fixed) ;
  item = item * 2;
  item2 = item2 - 5;
}
				
Program Output is:
Begin
New value after * is 20.000000
New value after minus is 18.000000
				

Back to the top

REFERENCES

Visual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.

Back to the top


APPLIES TO
Microsoft Visual C++ 4.2 Enterprise Edition
Microsoft Visual C++ 4.2 Professional Edition
The Standard C++ Library

Back to the top

Keywords: 
kbhowto KB158232

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.