So my friend and I were looking at the `std::vector` class the other day and noticed that you can use the function `std::vector::data` to retrieve a pointer to the internal array in c++11. Intuitively this seems somewhat redundant as you can access/update the contents of the internal array using the `[]` on the vector anyway.

It just seems like bad practice to me to "stick your hand into" an STL container.

Anyway, there must be some good applications of it. So my question is, what are those applications?

Thanks!

Reference:
<http://www.cplusplus.com/reference/vector/vector/data/>