벡터에 저장된 물체에 대한 포인터 사용… C ++
문제
글로벌 범위에 MyObjects의 벡터가 있습니다.
std::vector<myObject>
메소드는 벡터의 요소 중 하나에 대한 포인터가 전달됩니다. 이 메소드가 포인터를 증가시키고 다음 요소에 도달 할 수 있습니까?
myObject* pmObj;
++pmObj; // the next element ??
또는 통과해야합니다 std::Vector<myObject>::iterator
그리고 대신 그것을 증가 시켰습니까?
지금은 벡터가 그 동안 변경되지 않을 것이라고 가정합니다.
해결책
예 - 표준은 벡터의 저장소가 인접 해 있음을 기술 보정의 보장하므로 포인터를 벡터로 증가시킵니다.
다른 팁
예, 이것은 예상대로 작동합니다 std::vector
표준에 따라 연속 스토리지를 사용하도록 요구됩니다. 다양한 객체로 작업하는 경우 한 쌍의 반복자를 통과하는 것이 좋습니다. 이것은 STL이 사용하는 표준 관용구입니다. 이것은 카운트 나 그와 비슷한 것에 의존하는 대신 반복에 대한 명백한 엔드 포인트가 있기 때문에 코드를 조금 더 안전하게 만듭니다.
벡터가 재 할당되지 않고 벡터의 경계에서 벗어나지 않으면이 접근법을 사용할 수 있습니다. 포인터를 증가시키는 것은 합법적이며 다음 요소로 이동할 공간이 있지만 벡터의 버퍼가 단일 메모리 블록이므로 포인터를 증가 시켜서 그렇게 할 수 있습니다.
제휴하지 않습니다 StackOverflow