复制指针数组并跳过某些索引

Jac*_*cco 0 c++ arrays algorithm

我正在尝试为使用指针数组来存储对象的数组类创建一个remove函数.

所以我得到的是一个指向对象的指针列表:

objname* list = new objname[100];
Run Code Online (Sandbox Code Playgroud)

注意,它被声明为类的成员,我们称之为myClass.

我想要的是为myClass创建一个函数,它将索引作为参数,并从该索引的列表中删除该对象.这就是我所拥有的以及我想做的事情.

void myClass::remove(int index)
{
    objname* temp = new objname[listlen]; //creating a temporary list to copy values from the "main" list.

    //want to copy elements from 0 to index in "this->list" and store inside temp, then skip one element and copy the rest.

}
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法来获得此功能,如果是这样,我愿意接受建议.

jua*_*nza 5

我想要的是为myClass创建一个函数,它将索引作为参数,并从该索引的列表中删除该对象.

您可以用轻松地做到这一点std::vectorstd::next:

#include <vector>   // for std::vector
#include <iterator> // for std::next

std::vector<objname> v;

void myClass::remove(int index)
{
  v.erase(std::next(v.begin(), index));
}
Run Code Online (Sandbox Code Playgroud)

显然你应该首先检查矢量是否足够大index.

但是,如果您真正想要做的是将一个数组的一部分复制到另一个数组中,您可以使用标准库组件轻松地执行此操作:

std::vector<objname> v = ...;
std::vector<objname> temp(v.begin(), std::next(v.begin(), index));
Run Code Online (Sandbox Code Playgroud)

在这里,temp将包含第一个index元素的副本v.