主题:下面程序看看吧
程序里面的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;
}
修改指定位置的数据 这个函数是实现过程能大体讲讲吗?最好具体点.
#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;
}