If the size condition is slow, calculate it before the loop and then use the pre-calculated version for the loop (it checks it every iteration). In your original post, it looks like you attempted to pre-calculate it but then didn't use that value for the condition.
That said, if "ReturnMap()" actually returns the map, does it return a
copy of the map? Copying the entire map each time could cause delays. Instead, consider creating a method that just returns the size without returning the map.
Vertex Array is the most flexible way within SFML to draw things. It can do all of the things that all the other shapes can do. For this flexibility and power, though, you forfeit some ease of use as a lot of the conveniences disappear. Mastering vertex arrays (they are quite simple but can be daunting at first) greatly increases what you can do with SFML.
"Do I get [the] same functionality as with sf::ConvexShape?"
Using a vertex array with primitive type of triangle fan can create convex shapes in the same way.
However, with a vertex array, you can have many multiple triangles in one object and then draw them all at once (one draw call).
Read
the Vertex Array tutorial to become accustomed to what they do and how they work.