C++:覆盖新创建的数组中的元素

Mar*_*aux 2 c++ arrays memory-management

如果我有一个像这样创建的数组:

MyType *array = new MyType[10];
Run Code Online (Sandbox Code Playgroud)

我想要覆盖其中一个元素,我必须delete首先使用这样的旧元素:

delete &array[5];
array[5] = *(new MyType());
Run Code Online (Sandbox Code Playgroud)

或者这是完全错误的,我是否必须使用像"指针指针"这样的东西来解决这个问题?如果是这样,请多好....

谢谢

Tho*_*mas 11

它是一组,而不是指针.所以你就是这么做的

array[5] = MyType();
Run Code Online (Sandbox Code Playgroud)

这需要MyType支持赋值运算符.


顺便说一句,在C++中很少需要这样的手动数组分配.破除与newdelete和使用std::vector,而不是:

std::vector<MyType> array(10);
array[5] = MyType();
Run Code Online (Sandbox Code Playgroud)

注意,没有必要删除任何东西.

  • +1用于推荐std :: vector.似乎不能做到这一点:) (2认同)