我有兩個向量,我想用第二個向量填充第一個向量。向量被聲明如下: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