我有一个元素 vector 。我想使用该 vector 中符合特定条件的元素来填充一个集合。我可以用一行或比下面更简洁的任何方式来做到这一点吗?
// given vector<int> v
set<int> s;
for (const int& i : v)
{
if (/* some condition on i*/)
s.insert(i);
}
例如,类似以下内容:
// given vector<int> v
set<int> s;
s.insert(v.filter(/* lambda here*/));
不言而喻,出于性能原因,v.filter 方法应该返回一个迭代器,而不是一个单独的填充 vector 。
最佳答案
您可以使用 std::copy_if
用lambda和 std::inserter
将值插入到集合中。看起来像
std::copy_if(v.begin(), v.end(), std::inserter(s, s.begin()), [](auto val) { return val == some_condition; });
关于c++ - 我可以在一行代码中将符合条件的 vector 的所有元素插入到集合中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49777525/