Book Image

C++ Data Structures and Algorithm Design Principles

By : John Carey, Anil Achary, Shreyans Doshi, Payas Rajan
Book Image

C++ Data Structures and Algorithm Design Principles

By: John Carey, Anil Achary, Shreyans Doshi, Payas Rajan

Overview of this book

C++ is a mature multi-paradigm programming language that enables you to write high-level code with a high degree of control over the hardware. Today, significant parts of software infrastructure, including databases, browsers, multimedia frameworks, and GUI toolkits, are written in C++. This book starts by introducing C++ data structures and how to store data using linked lists, arrays, stacks, and queues. In later chapters, the book explains the basic algorithm design paradigms, such as the greedy approach and the divide-and-conquer approach, which are used to solve a large variety of computational problems. Finally, you will learn the advanced technique of dynamic programming to develop optimized implementations of several algorithms discussed in the book. By the end of this book, you will have learned how to implement standard data structures and algorithms in efficient and scalable C++ 14 code.
Table of Contents (11 chapters)

Summary

As we mentioned in the introduction, the lookup problem is encountered in most applications in one way or the other. We can use deterministic as well as probabilistic solutions as per our needs. In this chapter, we implemented and saw how we can use both of them. In the end, we also looked at an example of built-in containers for hashing in C++. These containers are extremely useful while we're writing applications as we don't need to implement them ourselves every time and for every type. A simple rule of thumb is this: if we can see a lot of function calls to the find function for the container, we should go for a lookup-based solution.

So far, we've seen how we can store data in various types of data structures and perform some basic operations. In the upcoming chapters, we'll look at various types of algorithm design techniques so that we can optimize those operations, starting with divide and conquer.