Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用重载运算符合并两个数组?_C++_Arrays_Class_Merge_Operator Overloading - Fatal编程技术网

C++ 如何使用重载运算符合并两个数组?

C++ 如何使用重载运算符合并两个数组?,c++,arrays,class,merge,operator-overloading,C++,Arrays,Class,Merge,Operator Overloading,例如,如果array1包含 1, 2, 5, 9, 12, 15 array2包含 3, 4, 7, 13, 19, 21, 25 然后在执行语句之后 阵列1+=阵列2 array2将保持不变,array1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25 class Array { public: Array(int sze)// default constructor { size = sze; ptr = new int

例如,如果array1包含 1, 2, 5, 9, 12, 15 array2包含 3, 4, 7, 13, 19, 21, 25 然后在执行语句之后 阵列1+=阵列2 array2将保持不变,array1将包含 1,2,3,4,5,7,9,12,13,15,19,21,25

class Array
{
public:
    Array(int sze)// default constructor
    {
        size = sze;
        ptr = new int [size];
    }
 //.......
    Array operator += (Array & a1, Array & a2)
    {
    //....
    return 0;
    }
它应该需要1个参数


一种简单的方法是将
this->ptr
的所有内容复制到临时数组中,然后删除ptr的内容以适应旧内容+新内容,为
this->ptr
分配更大的内存,然后从临时数组中复制内容和a2的内容,最后返回对
的引用,这是一种合并两个数组的简单方法:

Array& operator += (const Array & a2)
{
//....
return this;
}
数组和数组::运算符+(常量数组和sm){
int i,j;
此->\u size=\u size+sm.\u size;
对于(i=0;i<_size;i++);
此->数据[i]=数据[i];
对于(j=_size;j数据[i]=sm.data[i];
归还*这个;
}

按常量引用获取
a2
,并在释放旧分配之前执行新分配,以防出现异常。
Array & Array::operator +(const Array &sm){
    int i,j;
    this->_size = _size + sm._size;
    for(i = 0; i < _size; i++);
    this->data[i] = data[i];
    for(j = _size; j < sm._size;j++,i++);
    this->data[i] = sm.data[i];
    return *this;
}