c++ - C ++从数组中删除空元素
问题描述
如果满足条件,我只想将 a[i] 添加到结果数组中,但是此方法会在添加到 result[i] 时导致数组中的元素为空。有一个更好的方法吗?
for(int i=0; i<N; i++)
{
if(a[i]>=lower && a[i]<=upper)
{
count++;
result[i]=a[i];
}
}
解决方案
你可以先让result
空,并且只有push_back
a[i]
在满足条件时:
std::vector<...> result;
for (int i = 0; i < N; i++)
{
if (a[i] >= lower && a[i] <= upper)
{
result.push_back(a[i]);
}
}
count
你可以省略,因为它会result.size()
告诉你有多少元素满足条件。
要获得更现代的解决方案,就像一些程序员老兄建议的那样,您可以std::copy_if
结合使用std::back_inserter
来实现相同的目标:
std::vector<...> result;
std::copy_if(a.begin(), a.end(), std::back_inserter(result),
[&](auto n) {
return n >= lower && n <= upper;
});
推荐阅读
- python - 如何对每列都有一个系列的 DataFrame 进行操作?
- c# - 如何绑定列表视图中项目的子属性?
- python - 当 zeta 用作较大表达式中的变量名时,parse_expr 失败
- java - 删除 ArrayList 中的重复整数
- excel - 为什么 ThisWorkbook.Sheets.Range.Clearcontens 给出应用程序定义或对象定义的错误?
- amazon-web-services - Cognito 用户池 csv 标头在 us-east-2 中不可用,是否有解决方法?
- elasticsearch - ElasticSearch/Lucene - 将 slop 应用于 NOT
- php - max_execution_time 不会更新
- python - 如何隔离路径的一部分
- wordpress - WordPress featured image embedded into a Bootstrap card container