Book description
Get started with C++ programming by learning how to build applications using its data structures and algorithms
Key Features
 Explore data structures such as arrays, stacks, and graphs with realworld examples
 Study the tradeoffs between algorithms and data structures and discover what works and what doesn't
 Discover how techniques such as bloom filters and multiway heaps boost realworld applications
Book Description
C++ is a mature multiparadigm programming language that enables you to write highlevel 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 divideandconquer 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.
What you will learn
 Build applications using hash tables, dictionaries, and sets
 Explore how modern hardware affects the actual runtime performance of programs
 Apply common algorithms such as heapsort and merge sort for string data types
 Use C++ template metaprogramming to write code libraries
 Implement a URL shortening service using a bloom filter
 Use appropriate modern C++ idioms such as std:: array instead of Cstyle arrays
Who this book is for
This book is for developers or students who want to revisit basic data structures and algorithm design techniques. Although no mathematical background is required, basic knowledge of complexity classes and Big O notation along with a qualification in an algorithms course will help you get the most out of this book. Familiarity with C++ 14 standard is assumed.
Table of contents
 Preface
 1. Lists, Stacks, and Queues
 2. Trees, Heaps, and Graphs
 3. Hash Tables and Bloom Filters
 4. Divide and Conquer
 5. Greedy Algorithms
 6. Graph Algorithms I
 7. Graph Algorithms II

8. Dynamic Programming I
 Introduction
 What Is Dynamic Programming?
 Memoization – The TopDown Approach
 Tabulation – the BottomUp Approach

Subset Sum Problem
 Solving the Subset Sum Problem – Step 1: Evaluating the Need for DP
 Step 2 – Defining the States and the Base Cases
 Step 2.a: Brute Force
 Exercise 36: Solving the Subset Sum Problem by Using the BruteForce Approach
 Step 2.b: Optimizing Our Approach – Backtracking
 Exercise 37: Solving the Subset Sum Problem by Using Backtracking
 Step 3: Memoization
 Devising a Caching Scheme
 Exercise 38: Solving the Subset Sum Problem by Using Memoization
 Step 4: Tabulation
 Exercise 39: Solving the Subset Sum Problem by Using Tabulation
 Activity 18: Travel Itinerary

Dynamic Programming on Strings and Sequences
 The Longest Common Subsequence Problem
 Exercise 40: Finding the Longest Common Subsequence by Using the BruteForce Approach
 First Steps Toward Optimization – Finding the Optimal Substructure
 Activity 19: Finding the Longest Common Subsequence by Using Memoization
 From TopDown to BottomUp – Converting the Memoized Approach into a Tabulated Approach
 Activity 20: Finding the Longest Common Subsequence Using Tabulation
 Activity 21: Melodic Permutations
 Summary
 9. Dynamic Programming II

Appendix
 Chapter 1: Lists, Stacks, and Queues
 Chapter 2: Trees, Heaps, and Graphs
 Chapter 3: Hash Tables and Bloom Filters
 Chapter 4: Divide and Conquer
 Chapter 5: Greedy Algorithms
 Chapter 6: Graph Algorithms I
 Chapter 7: Graph Algorithms II
 Chapter 8: Dynamic Programming I
 Chapter 9: Dynamic Programming II
Product information
 Title: C++ Data Structures and Algorithm Design Principles
 Author(s):
 Release date: October 2019
 Publisher(s): Packt Publishing
 ISBN: 9781838828844
You might also like
book
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
book
C++ Data Structures and Algorithms
Learn how to build efficient, secure and robust code in C++ by using data structures and …
book
HandsOn Design Patterns with C++
A comprehensive guide with extensive coverage on concepts such as OOP, functional programming, generic programming, and …
book
Advanced C++
Become an expert at C++ by learning all the key C++ concepts and working through interesting …