gpt4 book ai didi

C++ 从两个 vector 中删除重复元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:32 25 4
gpt4 key购买 nike

我有两个 vector ,std::vector<double> xvecstd::vector<double> yvec ,每个都有数百万个元素和相同的大小。但是 xvec[i] 和 yvec[i] 的组合用于定义一个唯一的对象。例如

xvec = {1.0,2.0,2.0,3.0,2.0}
yvec = {5.0,1.0,1.5,2.0,1.0}

然后 2.0_1.0 组合是重复的元素,应该从 x 和 y vector 中删除。

我想在删除重复元素后返回 xvec 和 yvec。按照例子,返回的xvec和yvec应该是

xvec = {1.0,2.0,2.0,3.0}
yvec = {5.0,1.0,1.5,2.0}

我知道如何使用 sort 和 unique 函数对单个 vector 执行此类任务。但是任何人都可以给我一些想法来完成这个算法吗?

最佳答案

我会看到三种可能性:

解决方案1

针对给定的问题,自己实现 std::sortstd::uniquestd::unique 很容易实现,但我现在不想实现排序算法。因此,我不会向您展示这方面的示例。

解决方案2

实现您自己的 RandomAccessIteratorForwardIterator 并使用 std::sortstd::unique

解决方案 3

遍历值并使用 std::setstd::unordered_set 检查当前值是否已存在。

std::vector<double> xvec = {...};
std::vector<double> yvec = {...};

std::set<std::tuple<double,double> > set;
for (std::size_t i = 0; i < xvec.size();) {
if (set.emplace(xvec[i], yvec[i]).second) {
i++;
} else {
xvec.erase(xvec.begin() + i);
yvec.erase(yvec.begin() + i);
}
}

关于C++ 从两个 vector 中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146182/

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