回 帖 发 新 帖 刷新版面

主题:下面程序看看吧

程序里面的pos是什么意思?
修改指定位置的数据  这个函数是实现过程能大体讲讲吗?最好具体点.


#include <iostream>
using namespace std;
typedef int T; 
class Vector{
        T* data;        
        int size;
        int max;
        void expend(){
                max = 2*(max==0?1:max);
                T* n = new T[max];
                for(int i=0; i<size; i++){
                        n[i] = data[i];
                }
                delete[] data;
                data = n;        
        }
public:
        friend ostream& 
        operator<<(ostream&o,const Vector&v){
                for(int i=0; i<v.size; i++){
                        o << v.data[i] << ' ';
                }
                return o;
        }
        explicit Vector(int len=0):size(),max(len)
                {data = new T[len];}
        ~Vector(){delete[] data;}
        Vector(const Vector& v){
                size = v.size;
                max = v.max;
                data = new T[max];
                for(int i=0; i<size; i++){
                        data[i] = v.data[i];
                }                
        }
        Vector& operator=(const Vector&v){
                if(this==&v) return *this;
                delete[] data;
                data = new T[v.max];
                for(int i=0; i<v.size; i++){
                        data[i] = v.data[i];
                }
                size = v.size;
                max = v.max;
                return *this;
        }        
        //增加一个数据元素
        void insert(const T& d){
                insert(d, size);
        }        
        void insert(const T& d, int pos){
                if(pos<0||pos>size) pos=size;//越界放到最后
                if(size==max){ expend();}
                for(int i=size; i>pos; i--){
                        data[i] = data[i-1];
                }        
                data[pos] = d;        
                size++;
        }
        //删除指定位置的数据
        bool erase(int pos){
                if(pos<0||pos>=size) return false;
                for(int i=pos; i<size-1; i++){
                        data[i] = data[i+1];
                }
                size--;
                return true;
        }
        //删除所有等于d参数元素
        void remove(const T& d){
                for(int i=0; i<size; i++){
                        if(data[i]==d) erase(i--);
                }        
        }
        //修改指定位置的数据
        bool set(const T& d, int pos){
                if(pos<0||pos>=size) return false;
                data[pos] = d;
                return true;
        }
        //根据指定位置返回值
        T& at(int pos){
                if(pos<0||pos>=size) throw "out_of_index";
                return data[pos];        
        }
        //返回当前长度
        int getSize(){return size;}
        T& operator[](int pos){return data[pos];}
};
int main()
{
        Vector v;
        for(int i=0; i<10; i++){
                v.insert(i+1);
        }
        cout << v << endl;
        v.insert(100, 3);
        v.insert(200, 0);
        v.insert(300,12);
        cout << v << endl;
        v.insert(400, 100);
        cout << v << endl;
        Vector v2 = v;
        Vector v3;

回复列表 (共2个回复)

沙发

pos就是标记的位置!看过STL的,就知道这是干什么的了!

板凳

pos就是标记的位置!看过STL,就知道这是干什么的了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册