在结构的向量中查找
Find in Vector of a Struct
我做了以下程序,其中有一个结构
体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++ 中执行此操作需要您改为创建函子。
相关文章:
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 以C++递归方式查找向量中的最大值
- C++如何在向量中查找最常见的元素
- 查找两个排序向量中共有的元素
- 这是查找向量中元素位置的合法方法吗?
- 使用 C++ 查找向量的中值
- 查找向量的平均值
- 查找向量的一个向量的元素是否存在于另一个向量中
- 查找向量中数字的出现次数(以C++为单位)
- 查找向量C++中变量之间的百分比差异
- 查找向量中的最小值
- 迭代和递归地查找向量中是否存在元素
- 查找向量中的值索引位置
- 查找向量中的 n 个最大值
- 如何查找向量中元素的最大和最小索引
- 查找向量中小于阈值(复杂度)的所有数字
- 查找向量中某个元素的所有引用的索引
- 查找向量中最小+最大值元素的函数
- 在c++中查找向量中的值的差
- 如何在 C++ 中查找向量的第 m 和第 n 个元素之间的 max 元素