>>29
すみません、一点大事なことをいい忘れてました。
BのlistC1はC2のそれとは同じでなく、後者は前者の部分集合で、C2オブジェクト間でlistC1の関連はなく、ソートも必要ないのでした。

いただいたアドバイスを元に改良しました。
http://ideone.com/nog6AP
(いくつかC++14の機能があったので、自分のC++11環境でビルドが通らなくて焦りました)

ところで、以下が分かりませんでした。よければもう少し教えていただけますか?

・計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
・listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。