64,648
社区成员
发帖
与我相关
我的任务
分享
#include "Array.h"
template <typename T>
Array<T> & Array<T>::insert(const Array<T> & array2, int start) {
Array array1;
int i;
for(i=0;i<start;i++)
{
array1[i]=array[i];
}
for(i=start;i<array2.size();i++)
{
array1[i++]=array2[i-start];
}
for(;i<array1.size();i++)
{
array1[i++]=array[i-array2.size()];
}
array.copy(array2, array2.size());
}
#ifndef _ARRAY_H_
#define _ARRAY_H_
template <typename T>
class Array
{
private:
T * array;
int length;
public:
Array() {
array = new T[1];
length = 0;
}
~Array() {
delete [] array;
}
int size() const {
return length;
}
void copy(const T array2[], int length2) {
delete[] array;
length = length2;
array = new T[length];
for (int i = 0; i < length; ++ i) {
array[i] = array2[i];
}
}
Array & operator = (const Array & array2) {
copy(array2.array, array2.length);
}
T & operator [] (int index) const {
return array[index];
}
Array(const Array & array2) {
array = new T[1];
copy(array2.array, array2.length);
}
Array & insert(const Array & array2, int start);
};
#endif
#include "Array.h"
#include "Source.hpp"
#include <iostream>
using namespace std;
istream & operator >> (istream & in, Array<char> & string1) {
char array[100];
cin >> array;
int size = 0;
while (array[size]) ++ size;
string1.copy(array, size);
return in;
}
ostream & operator << (ostream & out, const Array<char> & string1) {
for (int i = 0; i < string1.size(); ++ i) {
out << string1[i];
}
return out;
}
int main() {
Array<char> string1;
Array<char> string2;
cin >> string1 >> string2;
string1.insert(string2, string1.size() / 2);
cout << string1;
}