我制作了以下程序,其中有一个结构
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)
但如果它在结构中,它会起作用吗?请帮忙。
答案 0 :(得分:2)
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 ++中执行此操作需要您创建一个仿函数。