std::vector
항목과 같은 "동적"항목을 저장하는 좋은 방법이지만 벡터의 실제 이점은 저장하는 항목 이 변경 될 수 있는 것이 아니라 벡터의 항목 수가 최소한으로 변경 될 수 있다는 것입니다 당신의 노력. 예를 들어, Item
객체를 배열로 저장하려면 컴파일 타임 ( Item items[SIZE];
)에 배열의 크기를 수정해야합니다. 즉 항목에 대한 상한이 고정되어 있음을 의미합니다 (다른 문제 중) 이 특정 주제와 관련이 있으므로 생략합니다.)
런타임 ( Item * items = new Item[SIZE];
)에 배열을 동적으로 할당 할 수도 있습니다. 나중에 새 스토리지를 할당하고 항목을 복사하고 이전 스토리지를 삭제하여 배열의 크기를 조정할 수 있습니다. 그러나 이것은 당신이 할 일이 훨씬 더 많습니다.
다행스럽게도, std::vector
그것은 당신을 위해하는 것입니다. 그것은 본질적으로 동적 크기의 배열 구현이며, 배열을 현재 용량 이상으로 확장하기 위해 메모리 관리를 처리합니다. 그것은 내가 지금 당신이 추구하는 제안하는 옵션입니다. 그러나 여전히 Item
수업 을 만들고 싶을 것 입니다.
사용하기 매우 쉽습니다 :
// Create an item list and two item objects to add to it.
std::vector<Item> items;
Item fireballPotion("Potion of Fireball");
Item healingPotion("Potion of Healing");
// Add the items:
items.push_back(fireballPotion);
items.push_back(healingPotion);
// operator[] is supported for accessing items.
// This will print "Potion of Fireball" for example:
std::cout << items[0].GetName();
vector
클래스에 대한 MSDN 문서 는 아마 읽을 가치가 있으며, "아무것도"저장 하는 데 사용 되는 템플릿에 익숙하지 않은 vector
경우 기본 사항도 참고해야합니다. 또한 마지막 포인트로 연결됩니다. 벡터가 무엇이든 저장할 수있는 것처럼 보이지만 허용되는 것에 대한 제약이 있으며 때로는 초보자를 던지기도합니다. 특히 벡터에 저장하는 유형은 복사 가능해야합니다. 예를 들어 벡터는 내부 저장소의 크기를 조정할 때 개체의 복사본을 만들어야하기 때문입니다. C ++ 의 세 규칙은 여기서 명심해야합니다.