manipulação de vetores criado com nova
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?
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.