Как показывают другие комментарии, вы ограничены использованием указателей. Но если это помогает, вот один из способов избежать прямого обращения с указателями.
Вы можете сделать что-то вроде следующего:
vector<int*> iarray;
int default_item = 0; // for handling out-of-range exception
int& get_item_as_ref(unsigned int idx) {
// handling out-of-range exception
if(idx >= iarray.size())
return default_item;
return reinterpret_cast<int&>(*iarray[idx]);
}