用css做網站菜單廣告多的網站
仿照vector手動實現(xiàn)自己的myVector,最主要實現(xiàn)二倍擴容功能
#include <iostream>using namespace std;template <typename T>
class Myvector
{T *data; //存儲數據的數組int len; //當前數組的長度int mycapa; //容納數據的總容量public://構造函數Myvector():data(NULL),len(0),mycapa(0){cout<<"無參構造"<<endl;}Myvector(int n, T a){data =new T[n];len = n;mycapa = n;for(int i=0;i<n;i++){data[i]=a;}cout<<"有參構造"<<endl;}//判空bool my_empty(){if(0 == len){return 0;}return 1;}//判滿bool my_full(){if(len == mycapa){return 0;}return 1;}//在末尾插入一個元素int mypop_back(T a){if(0 == mycapa){mycapa = 1;data = new T[1];}else if(len+1 > mycapa) //如果數組長度大于最大容量,最大容量二倍擴容{mycapa = 2*len;int *p = new T[mycapa];for(int i=0; i<len; i++){p[i] = data[i];}delete []data;data = p;}data[len] = a;len++;}//任意插入void my_insert(int pos, T a){if(0 == mycapa){mycapa = 1;data = new T[1];data[0] = a;}else if(len+1 > mycapa){mycapa = 2*len;int *p = new T[mycapa];for(int i=0; i<pos; i++){p[i] = data[i];}p[pos] = a;for(int i=pos; i<len; i++){p[i+1] = data[i];}delete []data;data = p;}else{for(int i=len-1; i>=pos; i--){data[i+1] = data[i];}data[pos] = a;}len++;}//移除最后一個元素void mypop_back(){len--;cout<<"移除最后一個元素成功"<<endl;}//刪除指定位置元素void my_erase(int pos){if(my_empty() && pos>len){cout<<"刪除失敗"<<endl;}for(int i=pos; i<len; i++){this->data[i-1] = this->data[i];}len--;cout<<"刪除指定位置元素成功"<<endl;}//展示void my_show(){cout<<"展示元素";for(int i=0; i<len; i++){cout<<data[i];cout<<" ";}cout<<endl;}//返回能容納的最大容量void my_capacity(){cout<<"最大容量為"<<mycapa<<endl;}//返回指定位置元素void my_at(int pos){cout<<"第"<<pos<<"個元素是"<<data[pos]<<endl;}//清空所有元素int my_clear(){cout<<"已全部清空"<<endl;return len=0;}};using namespace std;int main()
{Myvector<int> m(4,6); //有參構造創(chuàng)建了4個元素,每個元素都是6m.my_show();m.mypop_back(7); //尾插m.mypop_back(8);m.my_show();m.my_capacity(); //返回最大容量,此時為8cout<<"***************************************"<<endl;m.my_insert(5,9); //任意位置插入元素m.my_show();cout<<"***************************************"<<endl;m.my_erase(5); //任意位置刪除元素m.my_show();cout<<"***************************************"<<endl;m.mypop_back(); //移除最后一個元素m.my_show();cout<<"***************************************"<<endl;m.my_at(2);m.my_clear(); //清空m.my_show();return 0;
}