Ben Chuanlong Du's Blog

It is never too late to learn.

Good C++ Libraries

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

Good C++ Libraries

  1. Armadillo: linear algebra
  2. it++: signal processing
  3. shogun: a large scale machine learning toolbox
  4. boost: an advanced general purpose C++ library
  5. dlib: a general purpose cross-platform C++ library designed …

Profile C++ Code

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

You can use valgrind with the following options

valgrind --tool=callgrind ./(Your binary)

It will generate a file called callgrind.out.x. You can then use kcachegrind tool to read this …

Erase Elements of a Container Using Iterator in C++

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

@TODO: make a general discuss about removing elements form containers ...

vector -> best to remove backwards ...

You cannot erase elements from a container using the function std::for_each or the range-based for …

Const and Static Variables in C++

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

Const Variables

but you can initialize a static constexpr variable inside the defintion of a class.

  1. constexpr means that the corresponding value can be dertermined at compile time.

Static Variables

  1. You …

For Loops in C++

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

There are 3 for loops in C++, the usual for loop, the range-based for loop (introduced in C++11) and the std::for_each for loop.

  1. Both the range-based for loop and …

Template Meta Programming

Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!

Illustrative examples for the following discussions can be found here.

  1. Do not use templated generic function/method unless necessary. Templated generic function are more useful generally speaking. However, templated function/method …