Public speaking course notes Read "Dynamo, Amazon’s Highly Available Key-value Store" Read "Bigtable, A Distributed Storage System for Structured Data" Read "Streaming Systems" 3, Watermarks Read "Streaming Systems" 1&2, Streaming 101 Read "F1, a distributed SQL database that scales" Read "Zanzibar, Google’s Consistent, Global Authorization System" Read "Spanner, Google's Globally-Distributed Database" Read "Designing Data-intensive applications" 12, The Future of Data Systems IOS development with Swift Read "Designing Data-intensive applications" 10&11, Batch and Stream Processing Read "Designing Data-intensive applications" 9, Consistency and Consensus Read "Designing Data-intensive applications" 8, Distributed System Troubles Read "Designing Data-intensive applications" 7, Transactions Read "Designing Data-intensive applications" 6, Partitioning Read "Designing Data-intensive applications" 5, Replication Read "Designing Data-intensive applications" 3&4, Storage, Retrieval, Encoding Read "Designing Data-intensive applications" 1&2, Foundation of Data Systems Three cases of binary search TAMU Operating System 2 Memory Management TAMU Operating System 1 Introduction Overview in cloud computing 2 TAMU Operating System 7 Virtualization TAMU Operating System 6 File System TAMU Operating System 5 I/O and Disk Management TAMU Operating System 4 Synchronization TAMU Operating System 3 Concurrency and Threading TAMU Computer Networks 5 Data Link Layer TAMU Computer Networks 4 Network Layer TAMU Computer Networks 3 Transport Layer TAMU Computer Networks 2 Application Layer TAMU Computer Networks 1 Introduction Overview in distributed systems and cloud computing 1 A well-optimized Union-Find implementation, in Java A heap implementation supporting deletion TAMU Advanced Algorithms 3, Maximum Bandwidth Path (Dijkstra, MST, Linear) TAMU Advanced Algorithms 2, B+ tree and Segment Intersection TAMU Advanced Algorithms 1, BST, 2-3 Tree and Heap TAMU AI, Searching problems Factorization Machine and Field-aware Factorization Machine for CTR prediction TAMU Neural Network 10 Information-Theoretic Models TAMU Neural Network 9 Principal Component Analysis TAMU Neural Network 8 Neurodynamics TAMU Neural Network 7 Self-Organizing Maps TAMU Neural Network 6 Deep Learning Overview TAMU Neural Network 5 Radial-Basis Function Networks TAMU Neural Network 4 Multi-Layer Perceptrons TAMU Neural Network 3 Single-Layer Perceptrons Princeton Algorithms P1W6 Hash Tables & Symbol Table Applications Stanford ML 11 Application Example Photo OCR Stanford ML 10 Large Scale Machine Learning Stanford ML 9 Anomaly Detection and Recommender Systems Stanford ML 8 Clustering & Principal Component Analysis Princeton Algorithms P1W5 Balanced Search Trees TAMU Neural Network 2 Learning Processes TAMU Neural Network 1 Introduction Stanford ML 7 Support Vector Machine Stanford ML 6 Evaluate Algorithms Princeton Algorithms P1W4 Priority Queues and Symbol Tables Stanford ML 5 Neural Networks Learning Princeton Algorithms P1W3 Mergesort and Quicksort Stanford ML 4 Neural Networks Basics Princeton Algorithms P1W2 Stack and Queue, Basic Sorts Stanford ML 3 Classification Problems Stanford ML 2 Multivariate Regression and Normal Equation Princeton Algorithms P1W1 Union and Find Stanford ML 1 Introduction and Parameter Learning

A tour of C++, Standard library

2019-01-19

Essentially, the C++ standard library provides the most common fundamental data structures together with the fundamental algorithms used on them.

The facilities provided by the standard library can be classified like:

  • Run-time language support (e.g., for allocation and run-time type information).
  • The C standard library (with very minor modifications to minimize violations of the type system).
  • Strings (with support for international character sets and localization).
  • Support for regular expression matching.
  • I/O streams is an extensible framework for input and output to which users can add their own types, streams, buffering strategies, locales, and character sets.
  • A framework of containers (such as vector and map) and algorithms (such as find(), sort(), and merge())
  • Support for numerical computation, such as standard mathematical functions, complex numbers, vectors with arithmetic operations, and random number generators.
  • Support for concurrent programming, including threads and locks.
  • Utilities to support template metaprogramming (e.g., type traits), STL-style generic programming.
  • “Smart pointer” for resource management and an interface to garbage collectors.
  • Special-purpose containers, such as array, bitset and tuple.

Every standard-library facility is provided through some standard header. For example:

#include<string> // make the standard string facilities accessible
#include<list>

using namespace std; // make std names available without std:: prefix

string s {"C++ is a general−purpose programming language"}; // OK: string is std::string

This makes the standard string and list available.

Headers from the C standard library, such as <stdlib.h> are provided. For each such header there is also a version with its name prefixed by c and the .h removed. This version, such as <cstdlib> places its declarations in the std namespace.

String

String concatenation:

string compose(const string& name, const string& domain) 
{
    return name + '@' + domain; 
}

auto addr = compose("dmr","bell−labs.com");
  • A string is mutable.
    • s1 += '\n'
    • string s = name.substr(6,10);
    • name.replace(0,5,"nicholas");
    • name[0] = toupper(name[0]);
  • strings can be compared against each other and against string literals.
    • str1 == str2
    • str1 == 'yes'
  • string implementation
    • Short string values are kept in the string object itself and only longer strings are placed on free store.
      • Short: string s1 {"Annemarie"};
      • Long: string s2 {"Annemarie Stroustrup"};
      • Good if the memory allocation is costly (multi-threaded) and memory fragmentation caused by many different lengths of strings.
  • To handle multipe character sets, string is really an alias for a general template basic_string with the character type char.
    • We can handle different char type, like Jchar and unicode.
template<typename Char> 
class basic_string {
// ... string of Char ... 
};
using string = basic_string<char>

// for Jchar type
using Jstring = basic_string<Jchar>;

Regex

regex pat (R"(\w{2}\s∗\d{5}(−\d{4})?)"); // US postal code pattern: XXddddd-dddd and variants

Creative Commons License
Melon blog is created by melonskin. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
© 2016-2024. All rights reserved by melonskin. Powered by Jekyll.