인프런 커뮤니티 질문&답변
동적배열 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
지식공유자
네 GPT 말이 맞습니다.
_capacity를 1로 설정하면, 1.5를 곱해도 1이 됩니다 (정수 특성상)
그럼 사실 크기가 늘어나지 않으니 예외 사항을 둔 것입니다.
아니면 반올림 방식을 채택하는 등 다른 코드를 채택해도 되고,
아예 최소 capacity 크기를 2부터 하는 것도 방법이겠죠.






감사합니다!