Посмотрите на Каково значение по умолчанию для итератора? .
Как указывает кавычка, единственные значения - это значения итераторов, которые не связаны ни с одним контейнером. Единственное значение почти бесполезно: вы не можете его продвигать, разыменовывать его и т. Д. Один из способов (единственный способ?) Получения единственного итератора - не инициализировать его, как показано в ответе templatetypedef.
Одна из полезных вещей, которые вы можете сделать с единичным итератором, это присвоить это неособое значение. Когда вы делаете это, вы можете делать с ней все, что захотите.
Неингулярные значения, почти по определению, являются значениями итераторов, которые связаны с контейнером. Это объясняет, почему разыменовываемые значения всегда не являются единственными: итераторы, которые не указывают на какой-либо контейнер, не могут быть разыменованы (какой элемент это вернет?).
Как правильно заметил Матье М., неособые значения могут все еще быть разыменованными. В качестве примера можно привести итератор «через конец» (доступный путем вызова container.end ()): он связан с контейнером, но на него нельзя ссылаться.
Я не могу сказать, где эти термины определены. Тем не менее, Google имеет это сказать о «определить: единственное число» (среди других определений):
remarkable: unusual or striking
Полагаю, это может объяснить терминологию.