我有两个向量,我想用第二个向量填充第一个向量。向量被声明如下:C++用另一个向量填充矢量
vector<Vec3> firstVector;
凡VEC3与浮子的x,y和z的结构体。 我曾尝试喜欢这个与分配:
secondVector.assign(firstVector.begin(), firstVector.end());
,但是它停止和抱怨,不存在与结束的问题()。 我也尝试回推,但当然它不工作。
正如我以前读过的,我应该用assign来做,但我不知道如何正确解决它。
编辑:
与插入的错误消息,并且分配是相同的:
此00000000 ...的std ::矢量> * const的
[大小] CXX0030:错误:无法评估表达式
[capacity] CXX0030:错误:无法评估表达式
它指向Visual Studio的矢量文件以迭代或者结束回报。插入它指向迭代器开始。
的代码:
第一个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 *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";
}
希望这会有所帮助。
你的代码应该工作(尽管我不同意你“应该用assign来完成”)。你能发布你收到的确切的错误信息吗? – 2012-03-28 17:01:54
'secondVector'是如何声明的,错误信息究竟是什么? (另外,一个简单的'secondVector = firstVector'会做同样的事情)。 – 2012-03-28 17:02:45
我看到我应该发布错误消息。我用它编辑我的问题。 – matthew3r 2012-03-28 17:08:04