<p>What is the difference between a <code>const_iterator</code> and an <code>iterator</code> and where would you use one over the other?</p>

```
const_iterator
```
s don't allow you to change the values that they point to, regular
```
iterator
```
s do.
As with all things in C++, always prefer
```
const
```
, unless there's a good reason to use regular iterators (i.e. you want to use the fact that they're not
```
const
```
to change the pointed-to value).