Один из способов взглянуть на ссылки - думать о них как о неявно разыменованных указателях. Проще говоря, они являются указателями, но вы можете использовать обычный синтаксис доступа к переменным для их использования
Fred &fred = gFred[0];
Это создает ссылку на первый элемент вашего вектора gFred. (Кстати, у вас есть что-нибудь внутри этого?) Компилятор сделает что-то вроде этого:
Fred *pFred = &gFred[0];
Теперь, когда вы делаете:
fred = gFred[z];
компилятор действительно сделает что-то вроде этого:
*pFred = gFred[z];
что в переводе означает:
gFred[0] = gFred[z];
И вы делаете это N
раз, если в вашем vector
.
есть N элементов.
Если вы пытаетесь инициализировать все элементы вашего vector
, попробуйте этот конструктор:
vector(size_type n, const T& t)
, где
n = size of vector
t = gFred[0]