Вы можете использовать var.size()
, чтобы увидеть, содержит ли вектор указатель на var[5]
, но это не скажет вам, действителен ли указатель.
Вы можете создать небольшой класс-оболочку:
template <class T>
class wrapper {
bool valid;
T *data_;
public:
wrapper(T *d): data_(d), valid(true) {}
del() { delete data; valid = false; }
bool isValid() { return valid; }
T *data() { return valid ? data : NULL; }
};
std::vector<wrapper<x> > var;
var[5].del();
if (var[5].valid())
var[5].data()->Pos_X = 20;
Лично я предпочел бы просто убедиться, что все указатели действительны все время.