//
//  reserver_resize.cpp
//  CplusplusPractice
//
//  Created by masai on 2015/05/22.
//  Copyright (c) 2015年 masai. All rights reserved.
//

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char* argv[]){
    // デフォルトコンストラクタ
    vector<int> vec_def;
    cout << "vec_def size: " << vec_def.size() << ", capacity: " <<  vec_def.capacity() << endl;

    
    // コンストラクタでサイズ指定
    vector<int> vec_constructor(256);
    cout << "vec_constructor size: " << vec_constructor.size() << ", capacity: " <<  vec_constructor.capacity() << endl;
    
    
    // デフォルトコンストラクタで作成したvectorをreserveで変更
    vec_def.reserve(128);
    cout << "vec_def reserve size: " << vec_def.size() << ", capacity: " <<  vec_def.capacity() << endl;
    
    // リサイズで変更
    vec_def.resize(64);
    cout << "vec_def resize size: " << vec_def.size() << ", capacity: " <<  vec_def.capacity() << endl;

    // リサイズすると、size()も変更後と同じになる。出力すると、すべて0に初期化されていた。
    for(auto& a : vec_def){
        cout << a << " " ;
    }
    cout << endl;
    
    // リサイズでは、初期化する値を決定することができる
    vec_def.resize(128, 10);
    cout << "vec_def resize size: " << vec_def.size() << ", capacity: " <<  vec_def.capacity() << endl;

    for(auto& a : vec_def){
        cout << a << " " ;
    }
    cout << endl;

}