gpt4 book ai didi

c++ - 获取不属于另一个 vector 的所有 vector 元素

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

在 C# 中,如果我想获取 List List1 中不属于另一个 List List2 的所有元素,我可以这样做

var result List1.Except(List2);

在 C++ 中是否有与 std::vector 等价的东西? (允许使用 C++11)

最佳答案

以下内容用 List1 中不在 List2 中的内容填充 List3。我希望这是您要找的:

std::vector<Type> List1, List2;
//
// populate List1 and List2
//

std::vector<Type> List3;
std::copy_if(List1.begin(), List1.end(), std::back_inserter(List3),
[&List2](const Type& arg)
{ return (std::find(List2.begin(), List2.end(), arg) == List2.end());});

或者,这可能表现更好,因为您不必搜索整个列表来确定不存在。相反,您可以尽早“命中”并移动到下一个节点。注意谓词中的逻辑翻转:

std::vector<Type> List3;
std::remove_copy_if(List1.begin(), List1.end(), std::back_inserter(List3),
[&List2](const Type& arg)
{ return (std::find(List2.begin(), List2.end(), arg) != List2.end());});

关于c++ - 获取不属于另一个 vector 的所有 vector 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758680/

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