我有一个'simpleVector'的向量:

struct SimpleStruct
{
    XMFLOAT3 hello;
    XMFLOAT3 hi;
};

std::vector <SimpleStruct>      simpleVector(0);

我试图删除一个元素,例如simpleVector [3],然后将其余元素向下移动一个以删除空格。

simpleVector.erase(std::remove_if(simpleVector.begin(), simpleVector.end(),
    [](int i) { return i == 3; }), simpleVector.end());

但是,我收到此错误:无法将参数1从'SimpleStruct'转换为'int'。

如果这很明显,请原谅我,我是C ++的新手。 如何解决此问题?

#1楼 票数:2

如果要删除索引3处的元素,可以执行以下操作:

simpleVector.erase(simpleVector.begin()+3);

使用std::vector ,您无需显式地“向下移动所有其他元素”,这将在erase后为您完成。

#2楼 票数:1 已采纳

传递给std::remove_if的一元谓词需要能够接受SimpleStruct 其目的是评估是否应“删除”向量的每个元素。 您的谓词接受一个int ,并且没有从SimpleStructint转换。 您需要将谓词更改为有意义的内容。

另一方面,如果要删除simpleVector[3]的元素, simpleVector[3]需要

simpleVector.erase(simpleVector.begin() + 3);

#3楼 票数:1

要删除索引3处的元素,请执行以下操作:

simpleVector.erase( simpleVector.begin() + 3 );

还要注意,您不必担心将其余元素向下移动,因为矢量会自动为您处理。

由于向量将数组用作其基础存储,因此在除向量端以外的其他位置擦除元素会导致容器在将段擦除到其新位置后重新定位所有元素。 与其他类型的序列容器(例如list或forward_list)对同一操作执行的操作相比,这通常是一种低效的操作。 cplusplus.com

  ask by Ryan translate from so

未解决问题?本站智能推荐:

4回复

C ++中的向量和结构

我正在尝试创建一个包含多种数据类型和向量的数据树。 到目前为止我所拥有的内容如下所示: 现在这个编译很好,正是我想要的,但是,如果我尝试将值设置为: 然后我收到以下错误: 我错过了什么,或者我试图做不到的事情?
2回复

指向std ::结构向量的指针

如何创建指向Struct [i]的指针? 我想要做的就是这样,但我确信这可以做得更好: 主要目标是,我可以使用1行/函数轻松创建指向Struct [n]的指针。
1回复

创建结构,表达式的向量:向量下标超出范围

我对C ++还是很陌生,目前正尝试完成一些小挑战,以掌握较简单的方面。 我正在尝试创建一个数组(找到的矢量建议向量相同并且更好)来容纳大约10个人的数据。 每个人都有一个“索引”(用于标识person1,person2,person3等),一个“ num”(用于存储所收集的数据)和一个“
1回复

是否可以创建结构的二维向量?

到目前为止,我已经设置了一个int的2D向量(下面的代码,可以正常工作),但是我真正想要的是结构的2D向量数组,称为“ small_tile”。 在这里,我想用来自txt文件的数据填充结构的纹理int。 稍后,我还将填充其他数据值'tile_x,tile_y,r,c'。 我希望我的
2回复

将包含数组的结构推入向量

我正在编写一个执行差分进化的程序。 在某一时刻,我正在将我的解决方案整理到解决方案的存档中,并且遇到了这个问题。 我的档案是结构的向量: 当我进行排序并找到要放入存档的解决方案时,我正在创建SingleSolution并将其推送到存档中: 当我推入向量后,我释放了这些数组,因
2回复

如何释放带有数组指针的结构的向量?

我对向量发布有一些疑问。 释放媒介存储,他们说交换是释放向量的最佳方法 但是,如果向量具有具有多样性数组的结构,那么如何释放该向量? 1。 2。 第一路够吗? 还是不得不使用第二种方式? 或其他...? 我的项目使用JNI在android上运行。 这
1回复

从结构向量中删除重复元素(C++)

我有一个名为ParsedFlag的结构ParsedFlag ; struct ParsedFlag { std::string flag, value; ParsedFlag init(std::string f, std::string v) { flag
4回复

结构矢量:添加元素C ++

我正在从文件中读取我的结构,我想将它们添加到结构的向量中。 以下是它的外观和工作原理: 我应该怎么做才能将我的结构添加到矢量中,并将它们正常打印出来(如果结构正确加载到矢量中,这个打印真的只是一个检查)?