C++如何使用 lambda find_if选择多个对象
C++ how to select multiple objects using lambda find_if
我正在尝试浏览对象向量,然后选择一个匹配的特定 ID。下面的示例将打印与 ID 匹配的第一个对象,但如何打印或选择几个与相同 ID 匹配的对象?我尝试使用 while 循环,它可以工作,但是因为我每次都必须增加迭代器,我总是会遇到"分段错误"。
it = find_if(database.begin(), database.end(), [&id](cd &c) {
return c.getId() == id;
});
int index = std::distance(database.begin(), it); //finding index of the object
database[index].print(); //prints everything from the object
有几种选择,包括:
for (auto& c: database) {
if (c.getId() == id) {
c.print();
}
}
或
auto next_it = [&](auto beg) {
return std::find_if(beg, database.end(),
[&id](cd &c) {
return c.getId() == id;
});
};
for (auto it = next_it(database.begin()); it != database.end(); it = next_it(it + 1)) {
it->print();
}
或(范围 v3)
for (auto& c: database | ranges::filter([&](const auto& c){ return c.getId() == id; })) {
c.print();
}
按原样需要某种循环。你想做什么没有一行。我认为您想改用 std::copy_if 函数。
相关文章:
- 选择一个元素而不是一个对象的数组的原因
- 如何使用鼠标单击选择多个 QLabel 对象?
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- C++ 在运行时选择一个随机对象
- 谷神星求解器:残差函子使用的可变对象是否良好实践?还有什么其他选择
- 自动热键:重新映射 MS Visio 的快捷方式,以将手动选择的对象对齐到顶部(好像按:"AlignTop")
- 明智的选择是更喜欢lambdas功能对象
- 基于C 中布尔值向量中的向量中选择对象
- 在对象数组上进行选择排序
- C++如何使用 lambda find_if选择多个对象
- 我想将指向 const 对象的指针放入包含非 const 指针的容器中.我有什么选择
- Qt C++根据组合框中的选择创建一个对象
- RocksDB是存储同质对象的好选择吗
- 在不违反干prinicple的情况下,对传递功能对象的参数类型进行模板选择
- 面向对象的设计选择
- 如何使用OpenGL中的框选择有效地选择对象
- 当函数应该改变对象的状态时,是选择成员函数还是朋友函数
- 在运行时为调用函数选择对象,不包含基类和模板
- sizeof操作符是否优先选择对象而不是类型
- 一个宏,用于根据参数的数量选择对象实例化