#include <iostream>
#include <cstdio>
#include <vector>
std::vector<int> yes;
void view(void){
    std::cout << std::endl;
    std::cout << "size()=" << yes.size() << std::endl;
    std::cout << "max_size()=" << yes.max_size() << std::endl;
    std::cout << "capacity()=" << yes.capacity() << std::endl;
    std::cout << "element:";
    for(int i=0 ; i< yes.size() ; i++){
        std::cout << " " << yes[i];
    }
    std::cout << "\n\n";
}
int main(){
    puts("C++ vertor ¼ÒÀÀµ{¦¡\n");
    int in,a;
    bool verbose=true;
    while(1){
        printf("0 toggle verbose mode\n"
               "1 push_back() - add an element\n"
               "2 pop_back() - remove an element\n"
               "3 reserve() - set the capacity of the vector to at least size\n"
               "4 resize() - change the size of the vector\n"
               "5 clear() - remove all elements\n"
               "6 list current vector\n"
               "7 free the memory - std::vector<int>().swap()\n"
               "Select: ");
        scanf("%d",&in);
        fflush(stdin);
        switch(in){
            case 0:
                if(verbose){
                    puts("Verbose mode now turn off.");
                    verbose=false;
                }else{
                    puts("Verbose mode now turn on.");
                    verbose=true;
                }
                break;
            case 1:
                printf("Push what? ");
                scanf("%d",&a);
                yes.push_back(a);
                break;
            case 2:
                if(yes.empty()){
                    puts("Cannot pop_back()");
                }else{
                    yes.pop_back();
                }
                break;
            case 3:
                printf("Number: ");
                scanf("%d",&a);
                yes.reserve(a);
                break;
            case 4:
                printf("Number: ");
                scanf("%d",&a);
                yes.resize(a);
                break;
            case 5:
                yes.clear();
                break;
            case 6:
                view();
                break;
            case 7:
                std::vector<int>().swap(yes);
        }
        if(verbose && in!=6 && in!=0){
            puts("List current vector...");
            view();
        }
    }
    return 0;
}