2014-11-27 2 views
6

초급자에게 질문하는 것은 매우 유감 스럽지만 온라인에서 모순되는 정보를 찾고 있습니다. 나는 대학에 질문 할 것이지만 내년 2 월까지는 나갈 것입니다.벡터의 크기가 자동으로 조정됩니까?

벡터의 크기가 자동으로 조정됩니까? 또는 더 많은 공간이 필요하면 주기적으로 현재 크기를 확인하고 크기를 조정해야합니다. 그것은 자동으로 나를 위해 크기를 조정하는 것으로 보이지만 그것이 마법의 지팡이를 흔들거나 컴파일러인지 확실하지 않습니다.

+2

짧은 대답 : 예. –

+8

'insert' 또는'push_back'을 사용하면 크기가 조정되지만, 아래 첨자 연산자를 사용하는 경우에는 조정되지 않습니다 ('std :: map <>'처럼). – ildjarn

+0

전체 분석은 http://stackoverflow.com/questions/12271017/initial-capacity-of-vector-in-c에서 확인하십시오. –

답변

11

당신이 push_back 또는 insert를 사용하는 경우는, 예 벡터 자체 크기를 조정합니다. 여기 데모입니다 : 당신이 a[3] = 5을 할 경우 지금 기억

1 2 3 
Current size 3 

:

#include<iostream> 
#include<vector> 

using namespace std; 

int main() { 
    vector <int> a; 
    a.push_back(1); 
    a.push_back(2); 
    a.push_back(3); 
    for (int value : a) { 
     cout << value << " "; 
    } 
    cout << endl << "Current size " << a.size() << endl; 
    return 0; 
} 

그것은으로 출력을 제공합니다. 벡터 크기를 자동으로 조정하지 않습니다.
원하는 경우 수동으로 벡터의 크기를 조정할 수도 있습니다. 데모는 위의 코드에 다음 코드를 추가하십시오.

1 2 3 
Current size 3 
1 2 3 0 0 0 
Current size 6 

그것은 당신이 답을 찾은 것 같아 :

a.resize(6); 
for (int value : a) { 
    cout << a << " "; 
} 
cout << endl << "Current size " << a.size() << endl; 

는 이제 출력 것이다.

+0

Nit pick :'vector :: iterator it;'...'for it.a.begin(); it :: iterator it = a.begin(); it! = a.end(); ++ it)'에 비해'...''더 좋을 것입니다. (즉, 가장 유용한 유용한 범위에 변수를 정의하면,'! ='는 모든 표준 컨테이너에서 작동하므로 관용적이며, ++는 임시를 없애기 위해 최적화 프로그램에 대한 의존을 피하기 위해 사용됩니다. –

+0

또는 'for (const auto & e : a) {std :: cout << e << "" "; }'C++ 11 이후. – Jarod42

+0

@TonyD 나는'C'에서 주로 코드를 작성하고'C++'에 익숙하지 않으므로'C++ '코드의 대부분은'C'처럼 보입니다. 또한 대답에 영향을 미치지 않습니다. 어쨌든 언급 해 주셔서 고맙습니다. –

5

벡터의 크기가 자동으로 조정됩니까?

예, 그들은 할, 당신은 아주 쉽게 그 자신을 설득 할 수

std::vector<int> squares; 
for (int i = 0; i < 100; ++i) 
{ 
    squares.push_back(i * i); 
    std::cout << "size: " << squares.size() << "\n"; 
} 
관련 문제