在结构的向量中查找

Find in Vector of a Struct

本文关键字:查找 向量 结构      更新时间:2023-10-16

我做了以下程序,其中有一个结构

struct data
{
   int integers; //input of integers
   int times; //number of times of appearance
}

并且有一个这个结构的向量

std::vector<data> inputs;

然后我会从文件中得到一个整数 current_int

std::fstream openFile("input.txt")
int current_int; //current_int is what I want to check if it's in my vector of struct (particularly in inputs.integers)
openFile >> current_int;

我想检查current_int是否已经存储在我的矢量输入中。我尝试研究如何在向量中查找数据,据说您使用了这样的迭代器:

it = std::find(inputs.begin(),inputs.end(),current_int)

但是,如果它在结构中,这会起作用吗?请帮忙。

find有两种变体:

  • find()搜索纯值。 在你的例子中,你有一个 data 的向量,所以传递给find()的值应该是data的。
  • find_if() 采用谓词,并返回谓词返回 true 的第一个位置。

使用后者,您可以轻松匹配结构的一个字段:

auto it = std::find_if(inputs.begin(), inputs.end(), 
                       [current_int] (const data& d) { 
                          return d.integers == current_int; 
                       });

请注意,上述内容使用 C++11 lambda 函数。 在早期版本的 C++ 中执行此操作需要您改为创建函子。