gpt4 book ai didi

C++ 用另一个 vector 填充一个 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:35 31 4
gpt4 key购买 nike

我有两个 vector ,我想用第二个填充第一个。 vector 声明如下:

vector<Vec3> firstVector;

其中 Vec3 是一个具有 float x、y、z 的结构。我试过通过分配喜欢这个:

secondVector.assign(firstVector.begin(), firstVector.end());

但是它停下来并提示说 end() 有问题。我也试过推回,但当然不行。

正如我之前读到的,我应该用assign来做,但我不知道如何正确地解决它。

编辑:

insert 和assign 的报错信息是一样的:

这个 0x00000000 ... std::vector > * const

[size] CXX0030:错误:无法计算表达式
[容量] 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 *tfTable;

void TheApp::Init()
{
objLoader->ImportOBJ(tfTable, "testcube.obj");
}

objLoader 类,我在其中成功填充了我的“v_Vertices” vector ,其中“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 接受 firstVector 的所有值,而不是其他值,

secondVector = firstVector;

如果要将 firstVector 的每个元素添加到 secondVector 的末尾:

secondVector.insert(secondVector.end(), 
firstvector.begin(), firstVector.end());

如果您希望将 firstVector 的每个元素添加到 secondVector 的开头:

secondVector.insert(secondVector.begin(), 
firstVector.begin(), firstVector.end());

关于C++ 用另一个 vector 填充一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912223/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com