C++ templates


 
Thread Tools Search this Thread
Top Forums Programming C++ templates
# 1  
Old 01-27-2014
C++ templates

I have the following template codes but some normal functions too and want
to group them together.

I usually put the implementation of templates in an .ipp file. What would be a good scheme for the normal functions. Put their implementations in a .cpp file, or leave them in the .ipp file?

Code:
#ifndef NUMERIC_HPP
#define NUMERIC_HPP

#include <iostream>
#include <malloc.h>
#include <iomanip>
#include <cstdlib>
#include <string.h>

using namespace std;

template <class T>
inline T  
abs 
(
 T  v
 );

template <class T>
inline T  
sqr 
(
 const T  r
 ) ;

inline bool  
odd 
(
 int  i
 ) {
  
  return (i & 0x1);  //  Bitwise AND, (0101 & 0001) returns true.
  
}

inline bool  
even 
(
 int  i
 ) {
  
  return ( ! (i & 0x1) );  //  Bitwise AND, (0101 & 0001) returns true.
  
}

inline long int  
mem 
(
 );

inline void  
randomize 
(
 );

inline float  
rand 
(
   const float  max
 );

inline int  
rand
(
   const int  max
 );

#include "tomso/numeric/impl/numeric.ipp"

#endif

# 2  
Old 01-27-2014
Inline function definitions belong in a header, external function definitions belong in a .cpp.
# 3  
Old 01-27-2014
Is it possible to have the following two functions as a template for both integer and float?

Code:
inline float
rand 
(
 const float  max
 ) {

  return ( max * ((float) rand () / (float) RAND_MAX) );

}

inline int 
rand
(
 const int  max
 ) {

  return ( (int) floor (max * ((float) rand () / (float) RAND_MAX)) );

}

# 4  
Old 01-27-2014
That logic doesn't work for integers because rand() / RAND_MAX just becomes zero. You don't need floor either, you just can take the remainder with %, which calculates like this:

Code:
0 % 10 = 0
1 % 10 = 1
2 % 10 = 2
3 % 10 = 3
4 % 10 = 4
5 % 10 = 5
6 % 10 = 6
7 % 10 = 7
8 % 10 = 8
9 % 10 = 9
10 % 10 = 0
11 % 10 = 1
...

...so rand() % max gets you a number between 0 and max-1, as long as max is significantly smaller than RAND_MAX.

Code:
int random(int max) { return(rand() % max); }

Your logic looks reasonable for float however. Again, max should be much smaller than RAND_MAX.

Last edited by Corona688; 01-29-2014 at 01:32 PM..
This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

LibreOffice Templates Custom Distro

Hello, I have a custom Linux distro in which I'm trying to get templates for LibreOffice to ship by default. Is there a location they need to be placed or a file that needs to be edited? I've already tried using the template manager and add templates that way. I then copied /usr/templates/ and... (0 Replies)
Discussion started by: TheOuterLinux
0 Replies

2. Programming

Templates and header file

I have some C++ code and want to have the class declarations in a .h file and the implementation in the .cpp file. It seems however that for templates everything need to be put in the header (.h) file and will have problems if I try to separate the code to a .cpp file. Is this correct? Is... (1 Reply)
Discussion started by: kristinu
1 Replies

3. Solaris

A compilation problem when using templates

Hello life savers, I'm having trouble compiling a specific program. The program was originally written for gcc and was compiled successfully under it. When trying to compile under Solaris 11, I get this error: "Hashtable.h", line 170: Error: Could not find a match for hash needed in... (2 Replies)
Discussion started by: yp515
2 Replies

4. Shell Programming and Scripting

Reading from Templates

I am trying to write a script that would retrieve specific information from a template. I have been trying to no avail for the longest. This is what I wrote and it's not working. cat filename | while read F5 F6 do if ] then echo $F5 $F6 fi done Here is the template (filename) CN ... (7 Replies)
Discussion started by: Ernst
7 Replies

5. HP-UX

Where are SAM user templates stored?

Hey, new here, so be nice! I'm trying to write a little script to automate the user creation process on one of our boxes. But I would like to be able to use the templates that we have set up in SAM. Is the information in these templates stored in a file somewhere, that I can reference in my... (5 Replies)
Discussion started by: paqman
5 Replies

6. Post Here to Contact Site Administrators and Moderators

Templates

Hello, Anybody in here has any idea where I can get a template like this one for vBulletin. I have actually got my board but it just doesn't look good in the template that I have! Thanks anyway! him (2 Replies)
Discussion started by: him
2 Replies

7. Programming

site templates?

Are there any web site templates on CGI that allow like this forum software user registration and profiles. I dont need forum software i just need to register and keep profiles of my users on my site. Any suggestions? :confused: Thank you all. (1 Reply)
Discussion started by: solvman
1 Replies

8. Programming

c++ templates problems in g++

what we have: class TClass { public: TClass(); }; template<class T> class FClass<T>: public T { public: FClass(); }; TClass::TClass() { // some code } template<class T> FClass<T>::FClass : T() { // some code } int main (int argc,char* argv) { (3 Replies)
Discussion started by: Marhinado John
3 Replies
Login or Register to Ask a Question