我正在尝试将数组添加到包含动态数组
的Object中MyCollection.h
template <typename T>
MyCollection<T>::MyCollection(int size)
{
arraySize = size;
anArray = new T[size];
}
template <typename T>
MyCollection<T>::MyCollection(MyCollection<T>& coll)
{
arraySize = coll.arraySize;
anArray = new T[arraySize];
for (int i = 0; i < arraySize; i++)
{
SetValue(coll.GetValue(i), i);
}
}
template <typename T>
MyCollection<T>::MyCollection(T* myArray, int size)
{
anArray = myArray;
arraySize = size;
}
template<typename T>
void MyCollection<T>::AddAll(T pArray[], int size)
{
int plusSize = size - 1;
int arrayIterator = 0;
arraySize += size;
for (int i = size; i < arraySize - plusSize; i++)
{
anArray[i] = pArray[arrayIterator];
arrayIterator++;
}
}
主要
MyCollection<string> B = MyCollection<string>(new string[3], 3);
B.SetValue("C", 0);
B.SetValue("D", 1);
B.SetValue("E", 2);
string C[3];
C[0] = "X";
C[1] = "Y";
C[2] = "Z";
B.AddAll(C, 3);
B.Display();
在AddAll方法中,我遇到了访问冲突的错误。当我添加手表anArray [i] =。有什么想法会发生这种情况吗?复制construcotr左右有问题吗?
答案 0 :(得分:1)
在coll = Elasticsearch()
coll.update(index='stories-test',doc_type='news',id=hit.meta.id,
body={"doc": {"stanford": 1, "parsed_sents": parsed }})
中,您需要调整原始数组AddAll()
的大小,没有调整大小(您只需更改anArray
的数值,但不分配更多内存) 。所以你需要像
arraySize
您也可以考虑是否要将旧元素复制到新分配的数组中,在这种情况下,您首先必须使用临时指针重新分配,然后复制到其中,然后删除原始delete[] anArray;
// ...
anArray = new T[arraySize];
,并且最后将临时指针指向原始anArray
,如:
anArray