If sf::VertexArray is not good for you then don't use it, take a std::vector<sf::Vertex> instead. There's no magic in sf::VertexArray, it's just a thin wrapper around std::vector<sf::Vertex> provided for convenience.
Thanks for your reply,
Sorry, didn't want to sound like I'm complaining, it's not like it is not good for me, it really improved the performance of drawing lots of particles. It is just currently I have to have a vector of vertices where I can manipulate each of them, end every frame I have to clear the VertexArray and copy each vertex to it.
I thought I was missing something, and there was some other way around this.
Anyways, I'll keep it the way it is for now, maybe later I'll rewrite it based on your code but with the vector public.