需要帮助从结构向量中搜索元素
need help to search element from vector of struct
我有struct partationPartItemTag_t
类型的向量
typedef struct partationPartItemTag
{
std::string partition;
std::string partGroupId;
std::string mathTuid;
std::string partNumber;
tag_t itemTag;
}partationPartItemTag_t;
我想从向量中找到具有partition == 'a'
和partGroupId == 'b'
值的元素
我编写了以下代码,并且可以在 C++11 中正常工作但是现在我想修改此代码,因为我没有c ++ 11支持
partationPartItemTag_t mi={'a', 'b'};
vector<partationPartItemTag_t> searchlist;
searchlist.push_back(mi);
vector<partationPartItemTag_t>::iterator flag = std::search(partationPartItemTagVec.begin(),partationPartItemTagVec.end(),searchlist.begin(),searchlist.end(),[](partationPartItemTag_t &x, partationPartItemTag_t &y){
return ((x.partition.compare(y.partition) == 0) && (x.partGroupId.compare(y.partGroupId) == 0));
});
请帮我修改此代码,我看到函数指针的帖子很少,但我无法使用函数指针进行转换注意:我想在结构中查看 2 个成员的值,但我不能使用 lambda 函数或 c++11
提前谢谢。
lambda 只是一个方便的函子,它被引入,以便您可以更轻松地编写这些算法。
但这只是一种方便。如果你在这种情况下不能使用它们,那不是世界末日。毕竟,我们很多年都做不到。解决方案是回到使用函子:
struct SearchFor
{
/* ctor omitted for brevity */
std::string partition, partGroupId;
bool operator()(const partationPartItemTag_t& elem) const
{
return elem.partition == partition &&
elem.partGroupId == partGroupId;
}
};
然后内联使用它:
vector<partationPartItemTag_t>::iterator flag =
std::find_if(partationPartItemTagVec.begin(),
partationPartItemTagVec.end(),
SearchFor("a", "b"));
如果您需要从 C++11 转换为 C++098,更好的选择是用函子替换 lambda。
按如下方式定义函子compare
,并在算法中调用它来代替 lambda。
struct compare
{
bool operator(partationPartItemTag_t x, partationPartItemTag_t y) const
{
return ((x.partition.compare(y.partition) == 0) &&
(x.partGroupId.compare(y.partGroupId) == 0) );
}
}
std::search(partationPartItemTagVec.begin(),
partationPartItemTagVec.end(),
searchlist.begin(),searchlist.end(),
compare(partationPartItemTag_t &x, partationPartItemTag_t &y) );
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 高级选择排序 - 在一次迭代中搜索两个元素
- C++线性搜索算法,确定数组中元素的数量
- C++:使用类在向量中搜索特定元素时,我得到了错误的结果
- C++ lower_bound() 搜索最接近目标值的元素
- 在二叉搜索树中插入新元素
- 删除二叉搜索树 (C++) 中的单个元素
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 递归搜索n元树中的元素
- 从数组中搜索元素的索引
- C++二叉搜索树实现不会添加每个元素
- 如何在列表中快速搜索元素
- 如何在使用和无发现的情况下使用和不使用的字符串向量搜索元素
- 我在哪里可以从C 中的单链接列表中创建此函数到搜索元素时犯了错误
- 将数据从文件读取到链接列表中,并在链接列表中搜索元素
- STL 容器中的搜索元素
- 如何使用队列从C++中的每个节点中搜索元素
- 插入和搜索元素最快的数据结构是什么
- 需要帮助从结构向量中搜索元素