所以我试图从列表中删除结构的所有变量,我的结构就是这样
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)
{
}
}
答案 0 :(得分:0)
您可以这样做: -
for (list<LoginDetails>::iterator itri = loginDetails->begin(); itri != loginDetails->end(); )
{
if (itri->userName == username)
{
itri = loginDetails->erase(itri);
}
else
itri++;
}
但请记住,对于列表,您可以擦除元素,而不会影响对其他元素的任何迭代器的有效性。像vector或deque这样的其他容器并不那么友善。对于那些容器,只有擦除迭代器之前的元素保持不变。这种差异仅仅是因为列表在单独分配的节点中存储元素。一个链接很容易。向量是连续的,取出一个元素后,将所有元素移回一个位置后。
答案 1 :(得分:0)
您希望从列表中擦除项目,您可以执行以下操作:
list<LoginDetails>::iterator itri = loginDetails->begin();
while ( itri != loginDetails->end() )
{
if (itri->userName == username)
{
loginDetails->erase(itri++);
}
else
{
++itri;
}
}