Все это связано с дополнениями C ++ 11 (которые не являются новыми на данный момент, прошло более 7 лет).
auto
не является действительным типом, оно выводитсяк одному.Так что это никогда не нужно, хотя очень полезно.Например, если вы замените int index = hashFunction(key);
на auto index = hashFunction(key);
, вы на самом деле ничего не измените семантически: auto
выводится в int
из-за типа возврата hashFunction
.
См. cppreference .
Строка for (int x : table[i])
называется «петлей на основе диапазона» и эквивалентна следующему (по крайней мере, в этом случае):
{
auto && __range = table[i];
auto __begin = __range.begin();
auto __end = __range.end();
for ( ; __begin != __end; ++__begin) {
int x = *__begin;
// loop body
}
}
См. cppreference .