我有两个向量,我想用第二个向量填充第一个向量。这些向量的声明如下:
vector<Vec3> firstVector;
Vec3是一个由float类型的x、y、z构成的结构体。 我尝试着使用赋值操作符来实现:
secondVector.assign(firstVector.begin(), firstVector.end());
但是它会停下来并抱怨说,存在end()的问题。
我也尝试过pushback,但当然它不起作用。
根据我之前读到的,我应该使用assign,但我不知道如何正确解决它。
编辑:
insert和assign的错误消息是相同的:
this 0x00000000 ... std::vector > * const
[size] CXX0030:错误:无法评估表达式
[capacity] CXX0030:错误:无法评估表达式
它指向Visual Studio的vector文件中的迭代器末尾返回。使用插入时,它指向迭代器开头。
代码:
第一个Vector也是结构体的一部分:
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"结构体,并将其发送到我的加载器类中:
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
是如何声明的,错误信息确切是什么?(另外,一个简单的secondVector = firstVector
也会做同样的事情)。 - Mike Seymour