1.  About selectors, iterators

Everything about vertices and vertex selectors also applies to edges and edge selectors unless explicitly noted otherwise.

The vertex (and edge) selector notion was introduced in igraph 0.2, and it is a way to reference to sequence of vertices or edges independently of the graph.

While this might sound quite mysterious, it is actually very simple. For example all vertex of graph can be selected by igraph_vs_all(), and the graph independence means that igraph_vs_all() is not parametrized by a graph object. Ie. igraph_vs_all() is the concept of selecting all vertices of a graph.

This means that for determining the actual vertex id's implied by a vertex selector it needs to be instantiated with a graph object, the instantiation results a vertex iterator.

Some vertex selectors have immediate versions, these have prefix igraph_vss instead of igraph_vs , eg. igraph_vss_all() instead of igraph_vs_all(). These immediate versions are to be used in the parameter list of the igraph functions, like igraph_degree(). These functions are not associated with any igraph_vs_t object, so they have no separate constructors and destructors (destroy functions).