c + +填充一个矢量与另一矢量

我有两个向量,我想,以填补第一个与第二个。 该载体声明如下:

vector<Vec3> firstVector;

凡VEC3是浮法X,Y,Z一个结构。 我曾尝试喜欢这个与分配:

secondVector.assign(firstVector.begin(), firstVector.end());

但它停止并抱怨,有与终端问题()。 我也曾尝试推回,当然它不工作。

当我读到之前,我应该分配做到这一点,但我不知道如何正确地解决它。

编辑:

插入和分配的错误信息是相同的:

这种00000000 ......的std ::矢量> * const的

【尺寸】CXX0030:错误:表达式无法评估
[容量] CXX0030:错误:表达式无法评估

而它指向Visual Studio的矢量文件迭代器结束的回报。 随着插入它指向的迭代器开始。

代码:

第一个向量也是一个结构的一部分:

struct o3DModel { vector<Vec3> v_Vertices; }; struct Vec3 { public: Vec3() {} Vec3(float X, float Y, float Z) { x = X; y = Y; z = Z; } float x, y, z; };

我宣布上述“o3DModel”结构在我的应用程序类这样并将其发送给我的装载机类:

o3DModel *tfTable; void TheApp::Init() { objLoader->ImportOBJ(tfTable, "testcube.obj"); }

该objLoader类,在这里我成功地填补我的“v_Vertices”载体,其中“oModel”是派“tfTable”:

bool OBJLoader::ImportOBJ(o3DModel *oModel, char *strFileName) { FillObjData(oModel); ... return true; } void OBJLoader::FillObjData(o3DModel *oModel) { oModel->v_Vertices.insert(oModel->v_Vertices.begin(), v_Vertices.begin(), v_Vertices.end()); // This here with insert outFile2 << oModel->v_Vertices[0].x << "\n"; }

希望这可以帮助。

--------------解决方案-------------

或者,如果你不想做的构造函数使用

secondVector = firstVector

如果希望secondVector承担所有的值的firstVector和无其他

secondVector = firstVector;

如果希望每个元件firstVector要添加到结束secondVector

secondVector.insert(secondVector.end(),
firstvector.begin(), firstVector.end());

如果希望每个元件firstVector要添加到的开头secondVector

secondVector.insert(secondVector.begin(),
firstVector.begin(), firstVector.end());

你第二个向量需要被声明为VEC3 strucs向量的向量。

vector<vector<Vec3>> secondVector;
secondVector.push_back(firstVector);

这应该工作:

vector<Vec3> secondVector(firstVector.begin(), firstVector.end());

这时候,你有兴趣使用矢量构造的情况下。

好吧,我已经解决了,但有一点弯路。 在FillObjData我创建了一个新的VEC3,创造了一个如果,红粉第一向量的x,y,z坐标到新的VEC 3,和推VEC 3到载体。 当我宣布我的结构我已经宣布了真不是一个指针。 现在,它完美的作品。

分类:C# 时间:2015-03-15 人气:0
本文关键词: 向量
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.318 (s). 10 q(s)