Ich habe zwei Vektoren, und ich möchte den ersten mit dem zweiten füllen. Die Vektoren werden wie folgt erklärt:C++ Füllen Sie einen Vektor mit einem anderen Vektor
vector<Vec3> firstVector;
Wo vec3 ist eine Struktur mit float x, y, z. Ich habe versucht, das gefällt, mit assign:
secondVector.assign(firstVector.begin(), firstVector.end());
Aber es stoppt und beschwert sich, dass es ein Problem mit dem Ende ist(). Ich habe auch Pushback versucht, aber es funktioniert natürlich nicht.
Wie ich vorher gelesen habe, sollte ich es mit assign tun, aber ich weiß nicht, wie man es richtig löst.
EDIT:
Die Fehlermeldung mit Einsatz und weisen die gleichen sind:
diese 0x00000000 ... std :: vector> * const
[size] CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden
[Kapazität] CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden
Und es zeigt auf Visual Studio Vektordatei zu iterat oder enden Sie mit der Rückkehr. Mit insert zeigt es auf iterator begin.
DER CODE:
Der erste Vektor ist auch Teil einer Struktur: Zu meinen loader
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;
};
Ich erkläre die "o3DModel" struct oben in meiner app Klasse wie folgt aus und senden es Klasse:
o3DModel *tfTable;
void TheApp::Init()
{
objLoader->ImportOBJ(tfTable, "testcube.obj");
}
die objLoader Klasse, wo ich mein "v_Vertices" Vektor erfolgreich füllen, wobei "oModel", das "tfTable" gesendet ist:
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";
}
Hoffe, das hilft.
Ihr Code sollte funktionieren (obwohl ich nicht der Meinung bin, dass Sie "es mit assign tun sollten"). Können Sie die genaue Fehlermeldung, die Sie erhalten, posten? –
Wie wird 'secondVector' deklariert und was genau ist die Fehlermeldung? (Auch ein einfacher 'secondVector = firstVector' würde das Gleiche tun). –
Ich sehe ich sollte die Fehlermeldung posten. Ich bearbeite meine Frage damit. – matthew3r