Utilizo el siguiente método para obtener un espacio de memoria asignado sin preocuparme por cómo reclamar el recurso asignado.C++ - Obtener un puntero interno a un vector
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vecInts;
for(int iInd=0; iInd<10; i++)
vecInts.push_back(iInd);
int* pInt = &vecInts[0]; // Is this a good method?
// now can I use pInt to modify the value of the vecInts?
// I will NOT resize the vector and just simply manipulate the values inside
return 0;
}
Sin embargo, no estoy seguro si este método es bueno o no.
Gracias
¿Podemos llamarlo un truco? Dado que std :: vector no proporciona una función llamada const T * Get? - Gracias – q0987
No, esto no es un truco. Se supone que un vector debe usarse en lugares donde un programa C usaría una matriz. –
No es razonable en mi opinión. Es bien sabido que es seguro, y a veces es útil. Por ejemplo, http://en.wikipedia.org/wiki/Vector_(C%2B%2B) ilustra el uso de dicho puntero con llamadas a 'memcpy' y' printf'. Si te sientes más cómodo con los iteradores, siempre puedes usar uno en su lugar, aunque solo sea para obtener la dirección ala '& (* v.begin())' (igualmente válida solo cuando 'v.size()> 0 ') –