Book Image

The C++ Standard Library - Second Edition

By : Rainer Grimm
Book Image

The C++ Standard Library - Second Edition

By: Rainer Grimm

Overview of this book

Standard template library enables programmers to speed up application development using the built-in data structures and algorithms in their codes. The C++ Standard Library is a comprehensive guide to the updated library of classes, algorithms, functions, iterators, and containers and serves as the best reference to the current C++ 17 standard. Starting with the introduction and history of the standard library, this book goes on to demonstrate how quickly you can manipulate various C++ template classes while writing your applications. You'll also learn in detail the four types of STL components. Then you'll discover the best methods to analyze or modify a string. You'll also learn how to make your application communicate with the outside world using input and output streams and how to use the non-owning string objects with regular strings. By the end of this book, you'll be able to take your programming skills to a higher level by leveraging the standard C++ libraries.
Table of Contents (19 chapters)
Free Chapter
1
Reader Testimonials
8
6. Adaptors for Containers
19
Index

User-defined Data Types

If you overload the input and output operators, your data type behaves like a built-in data type.

friend std::istream& operator>> (std::istream& in, Fraction& frac);
friend std::ostream& operator<< (std::ostream& out, const Fraction& frac);

For overloading the input and output operators you have to keep a few rules in mind:

  • To support the chaining of input and output operations you have to get and return the input and output streams by non-constant reference.
  • To access the private members of the class, the input and output operators have to be friends of your data type.
  • The input operator >> takes its data type as a non-constant reference.
  • The output operator << takes its data type as a constant reference.
Overloading input and output operator
// overloadingInOutput.cpp
class Fraction{
public:
  Fraction(int num= 0, int denom= 0):numerator(num), denominator(denom){}
  friend std::istream&amp...