在结构的向量中找到

时间:2015-03-08 10:21:39

标签: c++ vector struct find

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

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)

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

1 个答案:

答案 0 :(得分:2)

two variants of 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 ++中执行此操作需要您创建一个仿函数。