강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

현미녹차님의 프로필 이미지
현미녹차

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

동적 배열

동적배열 Vector의 push_back 함수에서 조건문 질문

작성

·

23

0

void push_back(const T& data)

{

//TODO

if (_size == _capacity)

{

//증설작업

int newCapacity = static_cast<int>(_capacity * 1.5);

if (newCapacity == _capacity)

newCapacity++;

reserve(newCapacity);

이런식으로 흘러가는데

if (newCapacity == _capacity)이 조건문이 왜 필요한지 잘 모르겠습니다. Main함수에서 vector를 처음 만들때 2개짜리를 만들면 애초에 저 조건문을 절대 거치지도않을텐데 굳이 필요한 이유가 뭔가요?

지피티는 저 경우가 벡터의 크기가 0또는1일때 1.5배를 해도 크기가 증설되지 않으니까 그렇다고 말하고있는데 음 벡터를 0이나 1로 만들거면 애초에 그냥 변수로만들지않을까요..?

저 조건문이 왜 필요한지 궁금합니다..

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 GPT 말이 맞습니다.
_capacity를 1로 설정하면, 1.5를 곱해도 1이 됩니다 (정수 특성상)
그럼 사실 크기가 늘어나지 않으니 예외 사항을 둔 것입니다.
아니면 반올림 방식을 채택하는 등 다른 코드를 채택해도 되고,
아예 최소 capacity 크기를 2부터 하는 것도 방법이겠죠.

현미녹차님의 프로필 이미지
현미녹차
질문자

감사합니다!

현미녹차님의 프로필 이미지
현미녹차

작성한 질문수

질문하기