I was under the assumption that STL functions could be used only with STL data containers (like vector) until I saw this piece of code:
vector
#include
The introduction to boost::array (a simple templated wrapper for conventional arrays, which also defines STL-compatible iterator types and begin()/end() etc) contains some interesting discussion of their degree of compatability with STL.
begin()
end()