如何通过lambda使用自定义相等来查找在std::vector中具有一个匹配元素的元组
How to use custom equality via lambda to find a tuple with one matching element in a std::vector
假设我有一个std::list,看起来像这样:
std::list< std::tuple< UINT, SIZE_T, UINT > > FooList;
它没有以任何方式排序,并且给定一个UINT,我想搜索列表并查找是否有一个元组使用其最后一个元素与UINT匹配(即<*, *, UINT to Match>)。例如,如果我这样做:
FooList.emplace_back(100, 0x1000, 200);
FooList.emplace_back(200, 0x2000, 400);
FooList.emplace_back(400, 0x4000, 800);
如果我查找400,我应该找到0x2000,但是如果我查找100,我应该什么也找不到。
我正在寻找一个解决方案使用lambda。请让我知道。谢谢。
UINT key = 400;
auto p = std::find_if(FooList.begin(), FooList.end(),
[key](const std::tuple<UINT, SIZE_T, UINT>& t) {
return std::get<2>(t) == key;
});
if (p != FooList.end()) {
// found p
} // else not found
相关文章:
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- 编写了一个C++代码来检查表达式是否具有平衡括号并且我的代码未运行.我已经卡了一天了
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- 是否可以将具有不同签名的 lambda 存储在 std::vector 中并在函数中执行它们(使用各自的参数)?
- 一种优雅或至少可行的方法,用于使用和接受具有重载方法和运算符的不同大小的文字数组常量
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 将结构 std::memcpy 转换为具有足够容量的 std::vector 是未定义的行为<char>吗?
- 如何从一组具有从左到右优先级的整数值创建有序整数键?
- 另一种类型的智能ptr,比如具有弱refs的unique_ptr
- 如果我有很多具有相似前缀的字符串,是否有理由从该前缀创建一个子字符串?
- 给出了一个数的确切除数(n),如何确定具有n个除数的最小数?
- 如何查找具有一组整数的函数的'max absolute sum'
- 我如何拥有一个在 c++ 中具有一组坐标的数组
- 包括具有一个头文件和独立源文件的特定于平台的库
- 每次需要其中一个类的实例时,是否具有一组类的额外副本或从文件中读取更多内存
- 具有 std::vector 和 std::set 属性的容器
- 发送具有std::vector成员的结构时出现分段错误