从向量结构中删除元素[关闭]

Posted

技术标签:

【中文标题】从向量结构中删除元素[关闭]【英文标题】:Erase elements from vector struct [closed] 【发布时间】:2017-03-02 17:57:05 【问题描述】:

所以我开始学习向量,我想从结构向量中删除一个元素,我有这个作为结构:

typedef struct Carro
   int id, cc, cv;
   char marca[50], modelo[50];
car;

typedef struct Condutor
   vector<car> cars;
   int id;
   int totalC=0;
   char nome[50];
driver;

这个要删除:

for(int i=0; i< (*ptr).size(); i++)
    if((*ptr)[i].id == id)
        (*ptr).erase((*ptr).begin +i);
        verif=true;
        break;
    
    else
        verif=false;
    

但它似乎不起作用,因为我在尝试运行它时在擦除行中收到此错误:

invalid operands of types '<unresolved overloaded function type>' and 'int' to binary 'operator+'

如何从向量中删除元素?

【问题讨论】:

[OT] 你是来自 C 的偶然吗?您的代码中有几个 C'isms,您不必在 C++ 中执行。 甚至在 C 中你也可以说 ptr-&gt;thing begin() 是一个方法吗? 该特定错误可能是由您编写 begin + i 而不是 begin() + i 引起的,但除非您发布 MCVE,否则我们无法判断。我们没有水晶球,也不知道您的ptr 【参考方案1】:

在不知道 ptr 是什么的情况下,这有点猜测,但您可能想要:

  (*ptr).erase((*ptr).begin +i);

这个:

 ptr->erase( ptr->begin() +i);

begin() 是一个函数 - 您的代码尝试将其视为函数指针。

【讨论】:

是的,我忘了,ptr 来自 main,它是 &driver。你的答案是正确的,我会给你检查,我在这方面已经走了很长时间,而且都是为了一个简单的()。谢谢

以上是关于从向量结构中删除元素[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从向量中删除一个元素而不删除之后的元素

分段错误:从二维向量中随机删除元素

从向量中删除元素时如何减小向量的大小?

如何从向量中随机删除一个元素?

从末尾删除向量中的所有空元素

为啥 vector::clear 不从向量中删除元素?