Я бы предпочел использовать ссылки везде, но в тот момент, когда вы используете контейнер STL, вам нужно использовать указатели, если вы действительно не хотите передавать сложные типы по значению. И я чувствую себя грязным, обращаясь к ссылке, это просто кажется неправильным.
Это?
Чтобы уточнить...
MyType *pObj = ...
MyType &obj = *pObj;
Разве это не "грязно", так как вы можете (хотя бы в теории, так как сначала проверите его) разыщите указатель NULL?
EDIT: О, и вы не знаете, были ли объекты динамически созданы или нет.