title: What's the difference between iterator and back_insert_iterator?
body: <p>If random access iterators can be used to access elements at an arbitrary offset position relative to element they point to (somehow like pointers), why can't they be used in generic algorithms like <code>std::copy()</code> instead of using <code>back_insert_iterator</code>, and what's the difference between both?</p>