gpt4 book ai didi

c++ - 如何删除 C++ 列表中的一对重复出现? (保留只出现一次的元素)

转载 作者:太空狗 更新时间:2023-10-29 20:27:25 25 4
gpt4 key购买 nike

我试过使用 uniqueunique 只会删除重复项。

我的程序应该做的是例如列表包含 1,2,2,2,3,4,4。我想只删除重复的数字对,输出应该是 1,2,3(删除一对 2 和 4)。

最佳答案

遍历数据并删除对 ( Live code ):

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++;
}

输出

1 2 3 4 5 6 

还有 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++;
}

关于c++ - 如何删除 C++ 列表中的一对重复出现? (保留只出现一次的元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16383190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com