如果与变量匹配,如何从结构列表中删除1个结构

How to delete 1 struct from a list of structs if matching the variable?

本文关键字:结构 列表 1个 删除 变量 如果      更新时间:2023-10-16

所以我试图从列表中删除结构的所有变量,我的结构也是

struct LoginDetails
{
public:
    string userName;
    string userFirstName;
    string userLastName;
    string password;
    string tutor;
    int userAccess;
};

如何添加到以下代码中,然后删除结构中的所有内容。

cout << "Please enter a username to upgrade the account.n";
cin >> username;
for (list<LoginDetails>::iterator itri = loginDetails->begin(); itri != loginDetails->end(); itri++)
{
    if (itri->userName == username)
    {
    }
}

看起来您想从列表中删除项目,您可以执行以下操作:

 list<LoginDetails>::iterator itri = loginDetails->begin(); 
 while (  itri != loginDetails->end() )
 {
    if (itri->userName == username)
    {
        loginDetails->erase(itri++);
    }
    else
    {
        ++itri;
    }
  }

您可以这样做:-

   for (list<LoginDetails>::iterator itri = loginDetails->begin(); itri != loginDetails->end(); )
   {
      if (itri->userName == username)
      {
         itri =  loginDetails->erase(itri);               
      }
      else
         itri++;
   }

但请记住,对于list,您可以擦除一个元素,而不会影响其他元素的任何迭代器的有效性。像vector或deque这样的其他容器就不那么好了。对于那些容器,只有在擦除迭代器之前的元素保持不变。这种差异仅仅是因为列表将元素存储在单独分配的节点中。去掉一个环节很容易。向量是连续的,取出一个元素会将所有元素移回一个位置。