基于C 中布尔值向量中的向量中选择对象
selecting objects in a vector based on a vector of booleans in c++
i有一个布尔值的向量(例如我想要一个具有第二个向量元素在第一个向量中的对应关系的输出向量。
基本上,我正在尝试复制朱莉娅或r中的操作:
vec = vec[to_select]
我试图写一个copy_if,但是,可以说编译器不太喜欢它。这就是我拥有的
auto it = copy_if(vec.begin(), vec.end(), to_select.begin(), vec.begin(), [](auto& val, auto& cond){return cond;});
然后调整大小:
vec.resize(std::distance(vec.begin(), it));
任何建议以干净,快速的方式进行,可能不创建新向量?
向量保证了连续元素。因此,在将偏移量计算为"保留标志"序列时,通过在元素上使用指针算术可以使用删除/擦除成语:
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vec = { 1,2,3,4,5,6,7,8 };
std::vector<bool> flags = { true, true, true, false, true, false, false, true };
vec.erase(std::remove_if(std::begin(vec), std::end(vec),
[&](int& arg) { return !flags[&arg - vec.data()]; }), vec.end());
for (auto x : vec)
std::cout << x << ' ';
std::cout.put('n');
}
输出
1 2 3 5 8
显然至关重要的是vec
和flags
的大小相同(更确切地说,flags
至少与vec
一样大)。
相关文章:
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 选择和修改嵌套向量中的条目的最佳实践
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 从加密项目向量中解密任意选择的元素会导致无效的 PKCS #7 块错误
- 如何从字符串向量中选择第 n 个位置?
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- 如果我们从每个 Y 向量中选择一个值,则 X 数字的每个组合都可能
- 将向量<double>设置为wxComboBox的选择值
- 基于C 中布尔值向量中的向量中选择对象
- 有选择地对向量 c++ 进行排序
- C++选择排序(向量)
- 在C 复杂性和实现中选择位向量
- C++数组选择平方数并创建新向量
- 使用STD ::查找从向量中选择项目
- 测试std ::向量内容的选择
- 为什么我的选择排序返回原始向量中不在的值
- 在C++中选择运行时数组或向量
- 如何使用选择语句检索 sqlite 并分配给向量然后分配给字符串
- C++ Sqlite 选择语句并存储为向量
- 持有唯一值集的向量,以便使用 C++ 和 OpenGL 进行颜色选择