2回目のループ
c = cs.at(i)
オブジェクトをコピーしてる
cで操作しているオブジェクトは cs.at(i) で示しているオブジェクトと値は同じでも別のもの

C& c = cs.at(i) ならば c は参照なので
cへの操作は cs.at(i) への操作と等価になれる