1

C ++如何将此数组类型复制到向量

我得到了这个属于 VehicleTwoD 类的数组

我在主函数中这样声明

VehicleTwod *vechicletwod[100];

//after some computation
//vechicletwod got until [5];

//现在我需要进行排序,但我更喜欢在向量中进行。如何将vehicletwod的内容复制到相同类型的向量中

我做了类似的事情

vector<VehicleTwoD> sortVector;
sortVector = shapetwod;

但是我在 sortVector = vehicletwod; 中遇到了一些错误

感谢所有帮助!

4

3 回答 3

4

不幸的是,您将在数组中循环:

for (const auto& p : vechicletwod)
{
    sortVector.emplace_back(*p);
}

更好的选择是vector<VehicleTwoD> sortVector;从一开始就使用。

于 2012-10-30T05:45:39.877 回答
1

我只是制作一个*VehicleTwod 类型的向量,即vector<*VehicleTwod> sortVector。然后,您可以遍历您的数组并 push_back 每个元素。

也许是这样的:

typedef vector<*VehicleTwod> vecPtrVehicle2d;
typedef vecPtrVehicle2d::iterator vecPtrVehicle2dIter;

vecPtrVehicleWod sortVector;
int i, n = 100;

for (i=0; i<n; i++)
  sortVector.push_back(vechicletwod[i]);

您不需要这里的向量迭代器,我倾向于按习惯这样做。

于 2012-10-30T05:57:01.043 回答
0

你的类型不一致。

VehicleTwod *vechicletwod[100];

声明了一个 VehicleTwod指针数组,而您的向量被声明为存储实际的 VehicleTwod 对象,而不是它们的内存地址。尝试在没有“*”的情况下初始化 vechicletwod:

 VehicleTwod vechicletwod[100]; //array of actual objects

或更改向量以包含指针:

vector<VehicleTwoD*> sortVector;

一旦类型确定,您可以完全按照您最初尝试的方式使用“=”运算符。

   sortVector = vehicletwod; //overloaded = operator in class vector
于 2012-10-30T05:42:52.003 回答