用C++写一个二维数组模板类,很急,回答的好一定多给分~

2025-04-24 01:58:28
推荐回答(4个)
回答1:

//常量数组
const Array a2(3, 123, 234, 345);
cout<<"Testing Array: print 3"< cout< cout<<"Testing Array: print 4"< for(i=0; i cout< }
cout< //拷贝构造
Array a3(a1);
cout<<"Testing Array: print 5"< cout< const Array a4(a2);
cout<<"Testing Array: print 6"< cout< //数组赋值给数组
Array a5;
a5=a4;
cout<<"Testing Array: print 7"< cout< //增减数组元素
a5.setSize(a5.getSize()+1);
a5[a5.getSize()-1]=111;
cout<<"Testing Array: print 8"< cout< a5.setSize(a5.getSize()-2);
cout<<"Testing Array: print 9"< cout< //保存对象
Array a6(2, string("str0"), string("str1"));
cout<<"Testing Array: print 10"< cout< for(i=0; i a6[i]+=static_cast(48+i);
}
cout<<"Testing Array: print 11"< for(i=0; i cout< }
cout< const Array a7(3, string("000"), string ("111"), string("222"));
cout<<"Testing Array: print 12"< cout< for(i=0; i cout< }
cout< }
void testArray2D() {
//普通数组
Array2D a1(2, 2);
cout<<"Testing Array2D: print 1"< cout< unsigned int i,j;
for(i=0; i for(j=0; j a1[i][j]=i+j;
}
}
cout<<"Testing Array2D: print 2"< for(i=0; i for(j=0; j cout< }
cout< }
//常量数组
const Array2D a2(2, 2, 123, 234, 345, 456);
cout<<"Testing Array2D: print 3"< cout< cout<<"Testing Array2D: print 4"< for(i=0; i for(j=0; j cout< }
cout< }
//拷贝构造
Array2D a3(a1);
cout<<"Testing Array2D: print 5"< cout< const Array2D a4(a2);
cout<<"Testing Array2D: print 6"< cout< //数组赋值给数组
Array2D a5;
a5=a4;
cout<<"Testing Array2D: print 7"< cout< //保存对象
Array2D a6(2, 2, string("str00"), string("str01"), string("str10"), string("str11"));
cout<<"Testing Array2D: print 8"< cout< for(i=0; i for(j=0; j a6[i][j]+=static_cast(48+i+j);
}
}
cout<<"Testing Array2D: print 9"< for(i=0; i for(j=0; j cout< }
cout< }
const Array2D a7(2, 1, string("11111"), string("22222"));
cout<<"Testing Array2D: print 10"< cout< cout<<"Testing Array2D: print 11"< for(i=0; i for(j=0; j cout< }
cout< }
}

回答2:

c++的数组是行主序的,二维数组,在内存里面其实也是一维连续地址,先保存第一行的所有元素,然后紧接着在后面的地址存第二行的元素。。数组下标从0开始,就是存在第0行和第0列。。NUM[3][4]访问第3行和第4列元素。
你的串号我已经记下,采纳后我会帮你制作

回答3:

#include
#include
using namespace std;

template
class Array {
public:
Array(){;}
Array(int row);
~Array(){;}
int length();
T& operator[] (int i);
private:
vector data;
int size;
};

template
Array::Array(int size) {
this->size = size;
data = vector(size);
}

template
int Array::length() {
return data.size();
}

template
T& Array::operator [](int i) {
if (i >= size) {
cout << "over flow!" << endl;
exit(0);
}
return data[i];
}

int main()
{
Array< Array > arr2(10);
Array< Array< Array > >arr3(10);
/* etc.. */

arr2[0] = Array(10);
arr2[0][0] = 1;
arr2[0][1] = 2;
arr2[0][2] = 3;

cout<<"arr2:"< for (int i = 0; i < 3; i++) {
cout< }

arr3[0] = Array< Array >(10);
arr3[0][0] = Array(10);
arr3[0][0][0] = 1;
arr3[0][0][1] = 1;
arr3[0][0][2] = 1;
arr3[0][0][3] = 1;
arr3[0][0][4] = 1;

cout<<"arr3:"< for (i = 0; i < 5; i++) {
cout< }

return 0;
}
定义一个Array模板,然后嵌套着定义就行了,用vector比较简洁而且不容易出错 恩恩

对于补充的问题:
1. void run();必须声明成静态
2.call_func(sbd::run);

回答4:

c++有向量vector,下面程序供参考
#include
#include
using namespace std;

int main()
{
vector vec1;//一维
vec1.push_back(1);
vec1.push_back(2);
vec1.push_back(3);
vector vec2;
vec2.push_back(2);
vec2.push_back(20);
vector< vector > vecT;//二维
vecT.push_back(vec1);
vecT.push_back(vec2);
int i=0, j=0;
for(i=0; i<(int)vecT.size(); i++)
{
for(j=0; j<(int)vecT[i].size(); j++)
{
cout< }
cout<<"\n";
}

char c = getchar();//敲入字符以结束
}