私は2つのベクトルを持っています。最初のものには2番目のものを入れたいと思います。ベクトルは次のように宣言されます。C++ベクトルを別のベクトルで塗りつぶす
vector<Vec3> firstVector;
ここで、Vec3はfloat x、y、zの構造体です。 私は割り当てでこれを気に入って試してみました:
secondVector.assign(firstVector.begin(), firstVector.end());
しかし、それは終わりに問題があることを、停止して文句を()。 私はまたプッシュバックを試みましたが、もちろん動作しません。
私が前に読んだように、私は割り当てでそれをするべきですが、私はそれを正しく解決する方法がわかりません。
EDIT:
インサート付きのエラーメッセージや割り当てが同じである:
この0x00000000の...のstd ::ベクトル> * constの
[サイズ] CXX0030:エラー:式が評価できません
[容量] CXX0030:エラー:式を評価できません
そして、それはiteratのVisual Studioのベクトルファイルを指していますまたはリターンに終わります。 insertを実行するとiterator beginを指します。
CODE:
最初のベクターはまた、構造体の一部である:
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");
}
"oModelは" 送られ "tfTable" である私は成功した私の "v_Vertices" ベクトルを埋めるobjLoaderクラス、、:
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'も同じことをします)。 –
エラーメッセージが表示されるはずです。私はそれで私の質問を編集する。 – matthew3r