Ben Chuanlong Du's Blog

It is never too late to learn.

Tips on C++ Compilers

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

GCC

  1. User option -lpthread to link the thread library when your code use the thread library. If you do not use, the option -lpthread, you can probably compile your coe without …

Easy-Made Mistake with C++ Iterator

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

the wrong way

for(auto it=l.cbegin(); it!=l.cend(); ++it){
    for(auto jt=++it; jt!=l.cend(); ++jt){
        cout << *it << " <-> " << *jt << endl;
    }
}

it is increased again in the inner …

Sorting Functions in C++

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

std::sort std::stable_sort std::partial_sort

Notice that only std::stable_sort is stable sort (at the cost of additional time/space complexity). It is easy to achive stable sort using std …

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 …