다음 방법을 사용하여 할당 된 리소스를 회수하는 방법에 대해 걱정하지 않고 할당 된 메모리 공간을 얻습니다.C++ - 벡터에 대한 내부 포인터 얻기
#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;
}
그러나 이러한 방법이 좋은지 아닌지 잘 모르겠습니다.
은 (범위 등 밖으로 사라 벡터에 대한 포인터를 사용하지 않는 것처럼, 다른 명백한 사람)에게
우리는 이것을 Hack이라고 부를 수 있을까요? std :: vector는 const T * Get이라는 함수를 제공하지 않으므로? - 고마워. – q0987
아니, 이건 해킹이 아니야. 벡터는 C 프로그램이 배열을 사용하는 장소에서 사용되기로되어 있습니다. –
제 생각에는 합리적이지 않습니다. 안전하다는 것은 잘 알려져 있으며 때로는 유용합니다. 예를 들어, http://en.wikipedia.org/wiki/Vector_(C%2B%2B)는'memcpy'와'printf' 호출과 함께 포인터를 사용하는 것을 보여줍니다. 이터레이터에 익숙하다면, 주소를 ala'& (* v.begin())'(마찬가지로''v.size()> 0' ''일 때만 유효합니다.). –