zoukankan      html  css  js  c++  java
  • 模拟vector

    实现了vector的模板,insert, erase, push_back, iterator
    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    #include <stdlib.h>
    using namespace std;
    template <typename T>
    class Vector{
    public:
        int length = 0;
        int size = 1;
        T *a = (T*) malloc(sizeof(T));;
        T &operator[](int i){
            return a[i];
        }
        T push_back(T in){
            if(length == size){
                T *b;
                b = (T*) malloc(size*2*sizeof(T));
                for(int i = 0; i < size; i++){
                    b[i] = a[i];
                }
                delete(a);
                a = b;
                size *= 2;
            }
            a[length++] = in;
        }
        T* begin(){
            return a;
        }
        T* end(){
            return a+length;
        }
        typedef T* iterator;
        void clear(){
            length = 0;
        }
        int insert(int num, T b){
            if(num >= length) return -1;
            for(int i = length; i >= num; i--){
                a[i] = a[i-1];
            }
            a[num] = b;
            length++;
            return 0;
        }
        int erase(int num){
            if(num > length){
                return -1;
            }
            for(int i = num; i <length-1; i++){
                a[i] = a[i]+1;
            }
            length --;
            return 0;
        }
    };
    class cl{
    public:
    
        int a, b;
        cl(){a = 0, b = 0;};
    };
    Vector<int> v;
    Vector<cl> c;
    int main(){
        cl a;
        c.push_back(a);
        Vector<cl>::iterator It;
        for(It=c.begin();It!=c.end();It++)
            cout<<It->a<<" "<<It->b;
            cout<<endl;
    
        int *b = (int*) malloc(10);
        printf("%d", b[0]);
        for(int i = 0; i < 10; i++){
            v.push_back(i);
        }
        for(int i = 0; i < 10; i++){
            printf("%d ", v[i]);
        }puts("");
        Vector<int>::iterator it;
        for(it=v.begin();it!=v.end();it++)
            cout<<*it<<" ";
            cout<<endl;
        printf("%d %d
    ", v.size, v.length);
        v.insert(0, 1);
        for(it=v.begin();it!=v.end();it++)
            cout<<*it<<" ";
            cout<<endl;
        printf("%d %d
    ", v.size, v.length);
        v.erase(2);
        v.erase(3);
        for(it=v.begin();it!=v.end();it++)
            cout<<*it<<" ";
            cout<<endl;
        printf("%d %d
    ", v.size, v.length);
    
    }
    View Code
  • 相关阅读:
    Matching「CEOI2011」
    中位数之中位数「NOIP多校联考 2019」
    积木「CSP-S全国排位赛第一场」
    序列「CSP-S全国排位赛第一场」
    GT考试「HNOI2008」
    动物园「NOI2014」
    Radio Transmission「BOI2009」
    小Z的袜子「国家集训队」
    BZOJ3624: [Apio2008]免费道路
    BZOJ1190: [HNOI2007]梦幻岛宝珠
  • 原文地址:https://www.cnblogs.com/icodefive/p/5308345.html
Copyright © 2011-2022 走看看