Вопрос не ясен в том, что является вашей реальной проблемой, то есть нужно ли, чтобы вектор go имел заданный размер после построения или вы просто хотите проверить, был ли вставлен пятый элемент.
В первом случае размер вектора является инвариантом класса узла, вы должны применять этот инвариант во время построения. Добавьте конструктор к node
(как уже предлагали другие):
struct node {
static const int NUM_CHILDREN = 10;
std::string word;
std::vector<node*> child;
node() : word(), child( NUM_CHILDREN ) {}
};
Если, с другой стороны, размер вектора не является инвариантом, и вы хотите проверить, был ли вставлен пятый элемент и является ли он ненулевым, измените условие if:
if ( nodeptr->child.size() > 5 && nodeptr->child[5] ) {
Это условие сначала проверит, что вектор достаточно вырос (чтобы получить доступ к элементу в позиции 5, размер должен быть 6 или выше), а затем, не является ли элемент в позиции 5 нулевым. Обратите внимание, что &&
приведет к короткому замыканию, поэтому, если первое условие не выполняется, второе условие не проверяется.