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
是否与向量中存在的三元组的中的任何匹配
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;}