迭代数据并删除对(实时代码):
list<int> data{1, 2, 2, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 6};
for (auto i = data.begin(); i != data.end();)
{
auto n = std::next(i);
if (n == data.end())
break;
if (*i == *n)
{
i = data.erase(i);
i = data.erase(i);
}
else
i++;
}
Run Code Online (Sandbox Code Playgroud)
产量
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
也是1 2 3 为了1 2 2 2 3 4 4.
上面的代码从C++ 11开始工作,如果你没有它,试试这个:
for (list<int>::iterator i = data.begin(); i != data.end();)
{
list<int>::iterator n = i;
n++;
if (n == data.end())
break;
if (*i == *n)
{
i = data.erase(i);
i = data.erase(i);
}
else
i++;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |