
Discover the overview of the linked list section, including the introduction, purpose, and difference from arrays. Learn the three types—singly, doubly, and circular—along with common operations and many examples.
Learn the fundamentals of linked lists in C++. Understand nodes, next pointers, head and null termination, and the basic structure and purpose of a linked list.
Compare arrays and linked lists by examining size, allocation, access, and memory usage. Learn when insertion, deletion, and searching differ and why linked lists excel in dynamic scenarios.
Explore singly, doubly, and circular linked lists in C++ and learn how data and pointer parts form links, with heads, null endings, and bidirectional traversal.
Learn how to define a struct for a node in a singly linked list in C++, create nodes with new, connect nodes by updating next, and output data with cout.
Learn to insert nodes in a singly linked list in c++ by adding at the start, at the end, and at a chosen position, and to display the updated list.
Delete nodes in a singly linked list by key or by location using a head-referenced function, tracking previous and temp pointers and freeing memory, then delete the entire list.
Learn to find the length of a singly linked list, search for elements, and count occurrences in C++ using head and current pointers.
Learn to remove duplicates from a sorted singly linked list and from an unsorted one in C++ using pointer strategies.
Learn to reverse a singly linked list and segregate even and odd nodes in a C++ linked list using head, current, before, and after pointers.
Explore the structure of a doubly linked list in C++, with data, previous and next pointers, and how forward and backward traversal supports efficient insertion and deletion.
Master insertion in a doubly linked list in C++, including add at the front, after a node, at the end, and before a node, with head management and display.
Learn to delete nodes in a doubly linked list in C++, including handling head deletion, updating links, and freeing memory to prevent garbage values.
Remove duplicates from a sorted doubly linked list by comparing adjacent nodes and deleting duplicates. Handle unsorted lists by comparing each element with the rest, deleting duplicates and updating pointers.
Learn how to determine the length of a doubly linked list in C++, using a counter and a head-pointer traversal to count nodes until null.
Learn how to reverse elements in a doubly linked list in c++, using a temp pointer and a current pointer to swap node connections and update the head.
Explore circular linked lists in c++, including how to insert and link nodes with a head pointer, and apply it to OS scheduling, multiplayer games, and circular queues.
Learn how to insert nodes into a circular linked list in C++: insert at the start and at the end, manage head and last pointers, and implement search for elements.
Master deletion in a circular linked list in c plus plus, removing head, last, or middle nodes, updating pointers, and freeing memory.
Explore the fundamentals of templates in C++, including function and class templates, template parameters, features like template overloading, and the role of templates in linked lists and specialization.
Explore C++ templates as a powerful mechanism for code reuse, enabling type-parameterized functions and classes with full type checking. Learn how templates avoid repetition and support standard library use.
Explore function templates and class templates in C++, learning how a single template handles multiple data types and reduces code duplication with practical examples.
Master how C++ templates use different parameter kinds, including type, non-type, and template template parameters, and how default values influence instantiation and code reuse.
Explore how to overload function templates in C++, balancing template and non-template functions, how the compiler deduces template arguments, instantiates specializations, and resolves the best candidate in overload resolution.
Showcases how templates in C++ turn a linked list into a type-agnostic data structure, storing any data type with a template parameter and supporting an add item function and display.
Explore template specialization in C++, showing how to tailor generic templates for specific data types like characters and integers, and compare function and class template specialization with practical examples.
Explore partial specialization in C++ templates, a generalization of explicit specialization, and learn how the compiler selects between primary templates and specialized forms using template argument and parameter lists.
Explore explicit (full) template specialization in C++, including syntax, scope, and how to specialize functions, classes, and members, with comparisons to partial specialization.
Explore the final tutorial on templates in C++, acknowledge the topic's difficulty, encourage revisiting concepts, and offer instructor help for any remaining issues.
Explore virtual functions, runtime polymorphism, default arguments, and derived classes in this section. Learn about virtual constructors and destructors, inline and pure virtual functions, RTI, related questions, and practical examples.
Explore virtual functions and runTime polymorphism in c++, using base class pointers to access derived class behavior through late binding and the virtual keyword.
Learn how default arguments behave with virtual functions in C++. Default values do not affect function signatures and are substituted at compile time, influencing base class calls from derived objects.
Learn how virtual functions in a base class enable late binding in derived classes, how vtables store function addresses, and how derived implementations are selected via base pointers.
This lecture shows that static functions cannot be virtual in C++, because virtual calls rely on object types while static functions belong to a class.
Learn how virtual destructors in a base class ensure proper destruction during upcasting, calling derived then base destructors and preventing memory leaks.
Learn why virtual constructors cannot exist in c++ because constructors initialize without an object, while virtual functions rely on dynamic dispatch.
Explore the virtual copy constructor in c++, using clone and create methods to simulate virtual construction, implement copy and default constructors, and apply covariant return types for derived classes.
Understand runtime type information (RTTI) in C++ using the dynamic_cast operator, typeid, and the type_info class, and learn why a base class needs a virtual function for polymorphic casting.
Virtual functions can be private in C++, and derived classes can override them. Upcasting to the base class calls the derived function, illustrating the private base function behavior with friendship.
Explore inline and virtual functions in C++, showing how runtime polymorphism works with base class pointers and derived objects, and when inlining occurs at compile time.
Learn how abstract classes and pure virtual functions define interfaces in C++, preventing direct instantiation, enabling upcasting, and supporting runtime polymorphism through derived implementations.
Explore pure virtual destructors in C++, making a base class abstract by defining a virtual destructor. Learn how this affects derived classes and prevents creating objects of abstract types.
This section introduces multimap in advanced C++ programming, covering find and erase, insertion, counting, bounds (lower and upper), and related operations with syntax and usage.
Explore the multimap in the C++ standard library, which stores key-value pairs with non-unique keys, automatically ordered by a key comparator, and supports flexible iterators and templates.
Explore the multimap find and erase functions in the C++ standard library, learning how to locate keys with iterators and erase elements by key or range.
Explore the inplace function in the C++ standard library, covering map in place, multimap in place, and multimap in place with hint, explaining insertion, duplicates, and speed.
Explore how to use the multimap count function in C++ to determine how many times a key appears, with examples counting keys two, one, and three.
Master multimap traversal in c++ by using cbegin, cend, crbegin, and crend to access from the first to the last element and traverse in reverse with constant and reverse iterators.
Learn how to use multimap in C++, determine size, swap two multimaps, and obtain the maximum size, with practical examples of inserting and printing elements.
Explore lower bound and upper bound in multimap with practical examples, illustrating iterator returns, behavior when keys exist or exceed range, and common usage patterns in C++.
Explore the multimap equal_range function in C++, which returns an iterator of pairs binding all elements whose key equals the argument and shows behavior when no matches.
Explore c++11 features, including lambda expressions, automatic type declaration and uniform initializations, and coverage of deleted and defaulted functions, null pointer, delegating constructors, value references, and smart pointer classes.
Explore an introduction to C++11, highlighting features such as lambda expressions, auto type deduction, uniform initialization, nullptr, rvalue references, and a revamped standard library with new algorithms and multithreading support.
Explore lambda expressions in C++11, which define local functions at the call site, capture outside variables, specify parameters and optional return types, and use concise syntax in practical examples.
explains uniform initializations in C++11 and demonstrates brace initialization for uninitialized, initialized, and aggregate types, including constructors, dynamic arrays, and class data members.
Learn how c++11 introduces explicitly defaulted and deleted functions, allowing the compiler to generate default implementations for special member functions and to disable unwanted conversions, copies, and assignments.
Learn how C++11 introduces nullptr as a null pointer constant to distinguish it from integer zero in overload resolution, and understand its conversions, comparisons, and restrictions.
Discover how C++11 delegating constructors consolidate common initialization by routing to a target constructor, enabling clean constructor chaining, avoiding code duplication, and maintaining overload resolution and template behavior.
Explore rvalue references in C++11, learn how move semantics reduce copies, distinguish lvalues from rvalues, and implement move constructors and move assignments to optimize resources.
Learn how c++11 introduces auto type declaration and decltype to automatically deduce types from initializers or expressions, with practical examples using iterators, containers, and templates.
Explore namespaces in C++, from introduction to namespaces to nested namespaces, accessing namespaces, and creating alias and inline namespaces, highlighting their relation to classes.
Explore namespaces in C++, learn to distinguish identical identifiers with namespace blocks and the using keyword. Access and manage names across global and local scopes to avoid conflicts.
Explore how to declare and define a class inside and outside a namespace in C++, and how to implement namespace-scoped and class member functions.
Explore how to extend namespaces and use unnamed namespaces in c++, learn how identical namespace names merge into a single namespace, and observe scope interactions between global and local variables.
Access namespaces in C++ using the normal method or the using directive, enabling calls to functions in multiple namespaces and omitting the namespace prefix when using the directive.
Explore nested namespaces in C++, define namespace N1 containing N2, and learn to call outside and inside functions using using directives and the N1::N2 scope.
Learn how namespace aliasing simplifies accessing deeply nested namespaces in C++ by creating a concise alias to S1::S2::S3::S4 and using it to call functions and variables.
Explore how inline namespaces in C++ use the inline keyword to treat nested namespace members as part of the enclosing namespace, improving access without verbose qualification, with using directives.
C++ is a cross-platform language that can be used to create high-performance applications. C++ language was developed by Bjarne Stroustrup, as an extension to the C language. C++ gives programmers a high level of control over system resources and memory.
In this Course you will be getting in touch with the most advanced level topics related to C++ programming language. Each advanced level topic is covered in a separate section and covered in very detail.
It is designed to give you an intermediate-to-advanced level understanding of the language. There is extensive coverage of the Standard Template Library, including standard algorithm functions. Finally, a project in which you will exercise your new skills by writing a simple game and be able to implement all that you have covered in the entire course.
After successfully completing this course, you should be able to apply for jobs, answer interview questions and courses which require a good knowledge of C++ programming language.
I will be actively supporting the course and I will respond promptly if you have any questions or experience difficulties with the course content. Please feel free to use the Q&A feature or alternatively you can send me a private message.