As VertexArray is a wrapper for std::vector<sf::Vertex>, I see no reason why it should not be able to be used in a range based for loop. However, because it has no begin() and end() functions, you either have to define your own ones using getVertexCount(), which seems unnecessary, or just stick with index based arrays, which I think should only be used if you need to know which element you are referring to. I think that having to define your own begin() and end() functions is not very user friendly and is just a hassle where it could just be done once in the library, and therefore as SFML aims to be as user friendly as possible, these functions should be added. It would also mean that you can pass VertexArray into functions that expect a vector easily be simply passing a starting and ending iterator.