C++

C++11 Basics

  1. Passing by Reference

    1. Comparison with ”Passing by value”:
      https://www.geeksforgeeks.org/passing-by-pointer-vs-passing-by-reference-in-c/

  2. Templates

    1. Intro:
      http://www.cplusplus.com/doc/oldtutorial/templates/

  3. Namespaces

    1. Intro:
      https://www.geeksforgeeks.org/namespace-in-c/

  4. Shared Pointer

    1. Sample code
      http://en.cppreference.com/w/cpp/memory/shared_ptr

  5. Mutex

    1. Sample code
      http://en.cppreference.com/w/cpp/thread/mutex

  6. Unique Pointer

    1. Differences between various C++ pointer classes https://www.geeksforgeeks.org/auto_ptr-unique_ptr-shared_ptr-weak_ptr-2/

    2. Example code
      http://en.cppreference.com/w/cpp/memory/unique_ptr

    3. Moving unique_ptr in main(), should use auto type https://stackoverflow.com/questions/36071220/what-happens-to-unique-ptr-after-stdmove

    4. std::move
      http://en.cppreference.com/w/cpp/utility/move

  7. Rvalue, lvalue, xvalue, glvalue, prvalue

    1. Basic intro https://stackoverflow.com/questions/3601602/what-are-rvalues-lvalues-xvalues-glvalues-and-prvalues
      http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2010/n3092.pdf
      pdf page 89

    2. Rvalue references (X&&)
      http://thbecker.net/articles/rvalue_references/section_01.html

  8. Casting

    1. C++ Casting, or: "Oh No, They Broke Malloc!"
      https://embeddedartistry.com/blog/2017/2/28/c-casting-or-oh-no-we-broke-malloc

  9. Operator Overloading

    1. Function prototypes for overloading various operators
      http://en.cppreference.com/w/cpp/language/operators

  10. Const functions

    1. https://www.geeksforgeeks.org/const-member-functions-c/

  11. Standard Template Library (STL)

    1. Introduction
      https://www.geeksforgeeks.org/the-c-standard-template-library-stl/

  12. STL Sequence Containers

    1. vector

    2. list

    3. deque

    4. arrays

    5. Forward_list

  13. STL Container Adaptors

    1. queue

    2. priority_queue

    3. Stack

  14. STL Associative Containers

    1. Set

      1. std::tie
        http://en.cppreference.com/w/cpp/utility/tuple/tie

    2. multiset

    3. map

    4. multimap

    5. Unordered Map

      1. Sample code
        http://en.cppreference.com/w/cpp/container/unordered_map

  15. STL Utility

    1. pair

  16. Virtual Functions

    1. Example code
      https://www.geeksforgeeks.org/vector-in-cpp-stl/

  17. Exception Handling

    1. Good Introduction
      https://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling.htm

    2. Resource Acquisition is Initialisation
      https://www.tomdalling.com/blog/software-design/resource-acquisition-is-initialisation-raii-explained/

  18. Abseil Libraries

    1. Strings, string_view, Substitute()
      https://abseil.io/docs/cpp/guides/strings

  19. const

    1. Use of 'const' for function parameters
      https://stackoverflow.com/questions/117293/use-of-const-for-function-parameters

Google’s Open Source Stuff

Bazel

  1. Homepage
    https://bazel.build/

  2. Build system comparison for C shared library: Manual vs. Makefile vs. Bazel
    http://www.electronicsfaq.com/2017/08/build-system-comparison-for-c-shared.html

gflags

  1. Official Example
    https://github.com/gflags/example

Google Test and Google Mock

  1. Repository
    https://github.com/google/googletest

  2. Primer
    https://github.com/google/googletest/blob/master/googletest/docs/primer.md

  3. C++ Unit Testing with Google Test Tutorial [Video]
    https://www.youtube.com/watch?v=16FI1-d2P4E

  4. Googletest on Ubuntu
    http://www.electronicsfaq.com/2018/01/googletest-on-ubuntu.html

  5. Hello World of Google Mock
    https://fw-geekycoder.blogspot.in/2010/12/getting-started-with-google-test-and.html

  6. How to add gtest/gmock to your project’s Bazel WORKSPACE/BUILD files:
    https://stackoverflow.com/questions/45814669/c-project-with-bazel-and-gtest

Google Benchmark

  1. Repository
    https://github.com/google/benchmark

Protocol Buffers

  1. Repository
    https://github.com/google/protobuf

  2. Installation
    https://github.com/google/protobuf/blob/master/src/README.md

  3. Examples documentation
    https://github.com/google/protobuf/tree/master/examples

  4. C++ Reference
    https://developers.google.com/protocol-buffers/docs/cpptutorial

gRPC

  1. Install gRPC
    https://github.com/grpc/grpc/blob/master/INSTALL.md

  2. C++ Quickstart
    https://grpc.io/docs/quickstart/cpp.html

  3. Example code and setup
    https://grpc.io/docs/tutorials/basic/c.html

Blog Posts

  1. Fluent C++ - The Structure of Arrays / Array of Structures

    1. The SoA Vector – Part 1: Optimizing the Traversal of a Collection

    2. The SoA Vector – Part 2: Implementation in C++

  2. World map of C++ STL Algorithms [AWESOME]

    1. CppCon 2018: Jonathan Boccara “105 STL Algorithms in Less Than an Hour”
      https://www.youtube.com/watch?v=2olsGf6JIkU

    2. Poster
      https://drive.google.com/open?id=1tzUFJtui0XyShTAOP-kNs2y9UtAzll64

Design Patterns

Strategy Pattern

  1. Video
    https://www.youtube.com/watch?v=v9ejT8FO-7I

  2. Examples (C++ on Ubuntu)

    1. http://www.bogotobogo.com/DesignPatterns/strategy.php

    2. http://thispointer.com/strategy-design-pattern/

Observer Pattern

  1. Video
    https://www.youtube.com/watch?v=_BpmfnqjgzQ

  2. Example (C++ on Ubuntu)

    1. http://www.bogotobogo.com/DesignPatterns/observer.php

    2. http://thispointer.com/designing-a-configurable-logging-framework-using-observer-design-pattern/

Decorator Pattern

  1. Video
    https://www.youtube.com/watch?v=GCraGHx6gso

  2. Example (C++ on Ubuntu)

    1. http://www.bogotobogo.com/DesignPatterns/decorator.php

Factory Method Pattern

  1. Video
    https://www.youtube.com/watch?v=EcFVTgRHJLM

  2. Example (C++ on Ubuntu)