Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用std::只查找向量对或自定义向量三元组的第一个元素?_C++_Algorithm_Stl - Fatal编程技术网

C++ 如何使用std::只查找向量对或自定义向量三元组的第一个元素?

C++ 如何使用std::只查找向量对或自定义向量三元组的第一个元素?,c++,algorithm,stl,C++,Algorithm,Stl,我有一个向量,其中三元组是一个自定义数据类型,定义如下:- struct triplet{ int in, g, o; //where in denotes index of a triplet element in the vector<triplet> } struct三元组{ int-in,g,o;//其中in表示向量中三元组元素的索引 } 所以我的向量中有一个元素,如下所示 vector<triplet> v= ({0,4,0},{1,2,0},{2,

我有一个
向量
,其中三元组是一个自定义数据类型,定义如下:-

struct triplet{
   int in, g, o;  //where in denotes index of a triplet element in the vector<triplet>
}
struct三元组{
int-in,g,o;//其中in表示向量中三元组元素的索引
}
所以我的
向量中有一个元素,如下所示

vector<triplet> v= ({0,4,0},{1,2,0},{2,5,0},{3,4,0});
向量v=({0,4,0},{1,2,0},{2,5,0},{3,4,0});
我对这个向量有一些疑问

  • 我想使用
    find_if
    算法来确定
    x
    是否已经存在于
    v[I]中的任何一个中。在
    向量中存在的
    中,即,我想检查
    x
    是否与
    向量中存在的
    三元组的
    中的任何
    匹配
  • 我在互联网上找不到做这种查询的例子。如果有一些替代品可供使用,而不是查找,请提及。

    使用lambda函数

    int value_to_find = ...;
    find_if(v.begin(), v.end(), [=](const triplet& t){ return t.in == value_to_find; });
    

    任何时候出于某种目的需要一个一次性函数时,lambda函数都是明显的选择。

    这里通过引用(而不是通过值)捕获三元组。我们是否应该使用
    &
    而不是
    =
    ?三元组不会被捕获,而是作为参数传递给lambda函数。捕获的是要查找的
    ,对于整数来说,按值捕获是可以的。那么我们可以将
    =value\u写入查找而不是
    =
    ?很抱歉我知道这个问题听起来很傻……但我还是想证实这个事实。@noobCoder003这个问题非常明智。我自己几乎从不这样做,但我认为通过值显式捕获的正确语法只是使用变量名,没有等号
    [value\u to\u find](const triplet&t){return t.in==value\u to\u find;}