If we know how many vertices we will load we could reserve() space instead of relying on appends(push_backs) that will :
1. reallocate few times
2. possibly reserve more memory than they need
How bad these two will be depends on implementation of the vector.
The un-solution is using resize but it still feels like there are unnecessary restrictions.
Possible changes I think of:
- reserve(vector's reserve) and/or trim(Scott Meyer's ranged swap on the underlying vector) methods
- method to return non-const pointer/reference to underlying vector since it seems nothing in the vertex array code will break no matter what is done to the vector(except deletion, but really, delete &something; can be done on anything and there are more dangerous things in sfml already).