gpt4 book ai didi

c++ - 将具有给定谓词的给定 STL 容器中的元素提取到另一个容器

转载 作者:行者123 更新时间:2023-11-30 00:45:57 25 4
gpt4 key购买 nike

将满足特定条件的元素从一个 STL 容器提取和移动到另一个 STL 容器的最佳方法是什么(例如,vector)。例如:

std::vector<int> original {1, 2, 6, 7, 9, 34, 9, 7, 3}

// For example, I only need event numbers
auto criteria = [](const int a) -> bool { return a%2 == 0? }

std::vector<int> newvec = ...;

那么,手术后我想要的是

original = {1, 7, 9, 9, 7, 3}
newvec = {2, 6, 34}

一个优雅的解决方案将不胜感激。

最佳答案

我会使用自定义的删除/删除谓词,它将删除的元素添加到 newvec :

original.erase(std::remove_if(original.begin(), original.end(), [&](int n){
bool match = criteria(n);
if(match){
newvec.push_back(n);
}
return match;
}));

demo

您可能需要考虑抛出 vector<T>::reserve 如果您知道满足您的标准的元素的大概数量,则将其加入组合。

关于c++ - 将具有给定谓词的给定 STL 容器中的元素提取到另一个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823632/

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