要素を 1 スポット右memmove
にシフトするために使用しています。std::string
目的地の最初のスポットは、めちゃくちゃでゴミだらけの唯一のスポットです。テンプレートを必要とするクラスで使用しているため、memmove
代わりに使用しています。strcpy
ただし、intの配列がある場合は正常に機能します。文字列に対してこれを修正する方法について何か考えはありますか?
/**
* @brief Shifts elements in the array to the right
* @param newItem The insert position.
*/
template<class T>
void DynamicArray<T>::shiftElementsRight(uint newItem) {
uint diff = _size - newItem;
memmove(&(_array[newItem + 1]),
&(_array[newItem]), sizeof(_array[0]) * diff);
}
マイメイン
int main() {
DynamicArray<string> array(1);
string val1 = "val1";
array.add(val1);
string val2 = "val2";
array.add(val2);
// ... more additions ...
最後の出力:
Sizeof: 8
Value is: val1
Value is: val11val3, val21
����[val1, val2A����[val1, val2, val31val4, Aq�����[val1, val2, val3 val4, val5Q`r�#����[val1, val2, val3, val4, val5, val61val5, 1val6, Q"����[val1, val2, val3, al4, a
8s��p�hp��p�hq�(r�Xr�KC�KC�KC�1val7, a:����[val1, val2, val3, val4, val5, qF����[val1, val2, val3, val4, val5, val6]