Pergunta

alguém pode ajudar com isso ...

vector<unsigned int> *vVec = new vector<unsigned int>;
        vVec .reserve(frankReservedSpace);

        start = std::clock();
        for(int f=0; f<sizeOfvec; f++)
        {   //Populate the newly created vector on the heap
            vVec .push_back(pArray[f]);
        }

Eu estou começando: erro C2228: esquerda '.reserve' deve ter classe / struct / união

Estou criando um vetor usando o novo operador para que ele sobrevive a função em que ele é criado. Este, portanto, dá-me voltar um ponteiro para esse vetor na pilha ao invés de um objeto em si vector real. portanto, ele não vai deixar-me levar a cabo qualquer .reserve () de push_backs. Eu não posso ver uma maneira de contornar isso, alguém pode ajudar?

Foi útil?

Solução

vVec é um ponteiro para um vetor. Portanto, você deve estar usando o engano (->) (.) Operador em vez do ponto

vector<unsigned int> *vVec = new vector<unsigned int>;
vVec->reserve(frankReservedSpace);

start = std::clock();
for(int f=0; f<sizeOfvec; f++)
{  //Populate the newly created vector on the heap
   vVec->push_back(pArray[f]);
}

Outras dicas

Use "->" em vez de "". vVec é do tipo ponteiro, então você precisa usar operator -> para acessar membros do objeto ele aponta.

Em vez de

vVec.reserve(frankReservedSpace);

Você quer:

vVec->reserve(frankReservedSpace);

Pessoalmente, eu não ligo para a notação húngara você tem construir em seu nome variável. Eu preferiria ver algo mais específico domínio e auto-documentado que 'vVec'. Se você decidiu mudar para uma lista ligada, seria o nome da variável têm de mudar para refletir isso? Obviamente, a resposta é não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top