Separate shapes/parts from TopExp_Explorer()

I have this TopoDS_Shape with different shapes as one shape. I want to separate those shapes into individual shapes and I've been told to use the TopExp_Explorer (). I've managed to loop initiate a TopExp_Explorer and looping through it but I can not get the different shapes. Im not sure if I want to find all the vertices which are not in an edge(Ex.Init(S,TopAbs_VERTEX,TopAbs_EDGE)), or to find all faces in a shell and so on. I want to loop through the different shapes/parts and get the faces of that part.

rasmus si's picture

            for (ex.Init(aShape, TopAbs_SOLID); ex.More(); ex.Next()) 

This one worked for getting the different parts. My problem was that my function for getting the faces vector and point vector used push_back so the points and faces for the previous parts were included in the later.