|  | 
 
| 
2) 编写一个类模板,该类模板可以用各种类型实例化成元素是该类型的数组类,要求数组类提供下列功能:
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册          根据下标取数组元素的值;
         根据下标设置数组元素的值;
         根据下标在指定位置插入数组元素;
         根据下标删除指定位置的数组元素;
         在数组尾部增加元素。
 
 
 复制代码//实验4-2 
#include<iostream>
using namespace std;
template<class T>
class My_List{
public:
        My_List(T a[],int capacity){
                size=capacity;
                a=new T[size];
                for(int i=0;i<size;i++){
                        list[i]=a[i];
                }
        }
        void get_value(T list[],int index); //根据下标取数组元素的值
        void set_value(T list[],T j,int index); //根据下标设置数组元素的值
        void insert_value(T list[],int index); //根据下标插入数组元素的值
        void remove_value(T list[],int index ); //根据下标删除数组元素的值
        void add_value(T list[],T j); // 在数组尾部增加元素
        void print(T list[]){  //打印数组 
                for(int i=0;i<size;i++){
                        cout<<list[i];
                }
        }
private:
        T *list;
        int size;
};
template<class T>
void My_List<T>::get_value(T list[],int index){
        cout<<list[index]<<endl;
}
template<class T>
void My_List<T>::set_value(T list[],T j,int index){
        list[index]=j;
}
template<class T>
void My_List<T>::insert_value(T list[],int index){ //在第i位插入元素 
        if (index < 0 || index > size){
            return ;
        }
        int j; //要插入的元素 
        for(int i = size-1; i >= index ; i--){
        list[i+1] = list[i];
    }
    list[index] = j;
    size++;
}
template<class T>
void My_List<T>::remove_value(T list[],int index){
        if (index < 0 || index > size-1 ){
        return ;
    }
    for (int i = index; i < size-1; i++){
        list[i] = list[i+1];
    }
    size--;
}
template<class T>
void My_List<T>::add_value(T list[],T j){
        list[size-1]=j;
}
int main(){
        int p[8]={1,2,3,4,5,6,7,8};
        My_List<int> A(p,10);
        cout<<"1111111";
        A.get_value(p,4);
        A.set_value(p,3,2);
        A.print(p);
        A.insert_value(p,5);
        A.print(p);
        A.remove_value(p,6);
        A.print(p);
        A.add_value(p,22);
        A.print(p);
}
   最后输出啥都没显示,debug发现可能是数组创建的有问题,能帮我看看吗?
   
 
 本帖最后由 java2python 于 2020-5-25 10:29 编辑 
我的环境是:vscode+minGW 
你自己的代码先改成别的文件保存,在复制这个试一试?因为我把你显示p的,全部改用My_List里的list:
 复制代码//实验4-2 
#include<iostream>
using namespace std;
template<class T>
class My_List{
public:
        My_List(T a[],int capacity){
                size=capacity;
                list=new T[size];
                for(int i=0;i<size;i++){
                        list[i]=a[i];
                }
        }
        void get_value(int index); //根据下标取数组元素的值
        void set_value(T j,int index); //根据下标设置数组元素的值
        void insert_value(int index); //根据下标插入数组元素的值
        void remove_value(int index ); //根据下标删除数组元素的值
        void add_value(T j); // 在数组尾部增加元素
        void print(){  //打印数组 
                for(int i=0;i<size;i++){
                        cout<<list[i]<<"\n";
                }
        }
private:
        T *list;
        int size;
};
template<class T>
void My_List<T>::get_value(int index){
        cout<<list[index]<<endl;
}
template<class T>
void My_List<T>::set_value(T j,int index){
        list[index]=j;
}
template<class T>
void My_List<T>::insert_value(int index){ //在第i位插入元素 
        if (index < 0 || index > size){
            return ;
        }
        int j; //要插入的元素 
        for(int i = size-1; i >= index ; i--){
        list[i+1] = list[i];
    }
    list[index] = j;
    size++;
}
template<class T>
void My_List<T>::remove_value(int index){
        if (index < 0 || index > size-1 ){
        return ;
    }
    for (int i = index; i < size-1; i++){
        list[i] = list[i+1];
    }
    size--;
}
template<class T>
void My_List<T>::add_value(T j){
        list[size-1]=j;
}
int main(){
        int p[8]={1,2,3,4,5,6,7,8};
        My_List<int> A(p,10);
        cout<<"1111111";
        A.get_value(4);
        printf("after A.get_value(p,4);\n");
        A.set_value(3,2);
        printf("after A.set_value(p,3,2);\n");
        A.print();
        A.insert_value(5);
        printf("after A.insert_value(p,5);\n");
        A.print();
        A.remove_value(6);
        printf("after A.remove_value(p,6);\n");
        A.print();
        A.add_value(22);
        printf("after A.add_value(p,22)\n");
        A.print();
        system("pause");
}
 | 
 |