Я менее привык к жесткой проверке типов и вещам более низкого уровня, таким как освобождение.Недавно, при попытке написать что-то вроде
// Product is a struct I defined earlier, nothing fancy
vector<string, Product>::iterator it;
// Do some stuff with the iterator...
// And now I know I won't be using the iterator again
map<string, Product>::iterator it;
Однако это привело к ошибке «дублирующее объявление локальной переменной« it »».Итак, мой вопрос: почему это произошло?Я исследовал деконструкцию памяти, но насколько я знаю, что, очевидно, невозможно деконструировать итераторы, потому что они на самом деле указатели?Неужели C ++ действительно не позволяет вам использовать одно и то же имя для разных переменных, если вы знаете, что вам больше не понадобится старое, или вы обычно выпускаете их в память?