When your graph is adjacency_list<boost::vecS, boost::vecS, ...
then vertex descriptors are integers. Some vertex descriptors can become invalid when you remove a vertex; similarly, some edge descriptors become invalid when you remove an edge. If you never remove graph elements then these integer descriptors remain valid.
As BGL documentation states it, "if you want your vertex and edge descriptors to be stable (never invalidated) then use listS or setS for the VertexList and OutEdgeList template parameters of adjacency_list.".
Beware that if you use adjacency_list<boost::listS,...
you would likely need to make extra efforts to generate and update a property named vertex_index. Many algorithms will not work without it. See more details here https://stackoverflow.com/a/19758844/2876861