[CONNECT C++] ElementAgenda, IElementSet

ElementAgenda.BuildFromElementSet (IElementSetP elementSet, ModifyElementSource source) accepts an IElementSet.

The documentation for IElementSet reveals only ways to enumerate its contents, not ways to built the set.  How does one create an ElementSet?  IElementSet and ElementAgenda appear to serve the same purpose: what are the pros and cons of one over the other?