gpt4 book ai didi

c++ - 将重复的元素分开

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:52 25 4
gpt4 key购买 nike

我有一个 std::vector<std::string> textLines其中包含大量城市名称。我删除重复项:

using namespace std;

vector<string>::iterator iter;

sort(textLines.begin(), textLines.end());
iter = unique(textLines.begin(), textLines.end());

此时重复元素都是 vector 末尾的空字符串,大小与之前相同unique() .

我删除它们:

textLines.resize(distance(textLines.begin(), iter));

这工作正常,但有没有办法保留删除的重复项?如果将重复项移到末尾而不用空字符串替换,(对我而言)会更好。

iter指出了新的终点, 从 unique() 返回所以找到 vector 的新末端没有问题。

换句话说,我想知道哪些行有重复,哪些没有。

最佳答案

您可以非常简单地完成此操作,而无需真正彻底改变您的逻辑。您可以将重复项存储在另一个容器中,该容器由传递给 unique() 的比较谓词捕获:

vector<string> duplicates;
auto iter = unique(textLines.begin(), textLines.end(), [&duplicates](auto& first, auto& second) -> bool {
if (first == second)
{
duplicates.push_back(second);
return true;
}

return false;
});

实例:here .

关于c++ - 将重复的元素分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766895/

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