adjList.erase(adjList.begin()+1);
Я ожидал, что нулевой индекс в моем векторе списка будет удален.
Ваши ожидания неверны.
adjList.begin()+1
является итератором для элемента с индексом 1. Следовательно, удаление этого итератора приведет к удалению элемента с индексом 1 (то есть второго элемента).
adjList.begin()
является итератором для элемента с индексом 0, поэтому, если вы хотите стереть этот элемент, то это итератор, который вам необходимо стереть. Однако обратите внимание, что если вам нужно часто стирать первый элемент последовательности и сохранять последовательность в исходном порядке, то вектор - неэффективный выбор. В таком случае вы можете рассмотреть возможность использования deque.
adjList.erase(adjList.begin());
Я ожидал получить следующее: 1: 3-> 0-> NULL 2: 4-> NULL
Ваши ожидания неверны.
Вектор никогда не пропускает никаких индексов. Если в векторе имеется n элементов, то эти элементы находятся в индексах 0 ... n-1.
Когда вы стираете элемент вектора, элементы с большими индексами сдвигаются влево (поэтому удаление из любого места, кроме конца вектора, происходит медленно).