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)
可能有更好的方法来获得此功能,如果是这样,我愿意接受建议.
我想要的是为myClass创建一个函数,它将索引作为参数,并从该索引的列表中删除该对象.
您可以用轻松地做到这一点std::vector和std::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.