nap*_*con 4 c++ stl stdvector stdset c++11
我有一个元素的向量.我想使用匹配特定条件的此向量元素填充集合.我可以使用一行,或以比下面更简洁的方式执行此操作吗?
// given vector<int> v
set<int> s;
for (const int& i : v)
{
if (/* some condition on i*/)
s.insert(i);
}
Run Code Online (Sandbox Code Playgroud)
例如,以下内容:
// given vector<int> v
set<int> s;
s.insert(v.filter(/* lambda here*/));
Run Code Online (Sandbox Code Playgroud)
不言而喻,出于性能原因,v.filter方法应返回迭代器,而不是单独的填充向量.
Nat*_*ica 10
您可以使用std::copy_if一个拉姆达和std::inserter对值插入到该集合.看起来像
std::copy_if(v.begin(), v.end(), std::inserter(s, s.begin()), [](auto val) { return val == some_condition; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |