获取不等于特定值的向量的第一个N元素
Getting the first N elements of a vector that do not equal a particular value
说我有一个大小12的std ::向量。我想选择不等于2或30的向量的6个元素。我该怎么做?
我尝试过:
for (int i=0; i<12; i++)
{ if (vector.at(i) != 2 && vector.at(i) != 30)
{ selected_number = vector.at(i);
}
else
{ selected_number=vector.at(i+1)
}
}
,所以您想要向量foo
的前6个元素,哪个不是2或30?
std::vector<int> bar;
for(auto i : foo){
if(i != 2 && i != 30 && bar.size() < 6) {
bar.emplace_back(i);
}
}
这不是完美的,但这是使这只猫皮肤的简单方法之一。
with range-v3,您可以做
auto selectedNumbers = v
| ranges::view::filter([](int i) {return i != 2 && i != 30;} )
| ranges::view::take(6);
demo
使用std::copy_if
std::vector<int> from_vector;
std::vector<int> to_vector;
// ...
std::copy_if(from_vector.begin(), from_vector.end(),
back_inserter(to_vector),
[&to_vector](int i){
if(i != 2 && i != 30 && to_vector.size() < 6)
return true;
else
return false;
});
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 如何将正则表达式向量与一个字符串匹配?
- 为什么第一个Dynamic_cast没有投射到基类?
- 从 c++ 中的字符串向量创建一个元组
- 按另一个向量对一个向量进行排序
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 在我的第一个C++程序中需要一些帮助(简单)
- 为什么我的代码在第一个 if 语句处中断?
- 获取不等于特定值的向量的第一个N元素