C STD :: find_if在自定义类上
C++ std::find_if on a custom class
我有一个自定义类(term(的std ::向量。我正在尝试使用std :: find_if构造在该类中找到该类的术语。我缺少一些东西:
term.h
#ifndef _TERM_H_
#define _TERM_H_
#include <string>
class Term {
public:
Term() {}
Term(std::string, float);
void setTerm(std::string myTerm) {this->term = myTerm;}
void setWeight(float myWeight) {this->weight = myWeight;}
std::string getTerm() const {return this->term;}
float getWeight() {return this->weight;}
bool operator<(Term &t) {return t.getWeight() < this->getWeight();}
bool operator==(const Term *t) const {return this->getTerm().compare(t->getTerm()) == 0;}
private:
std::string term;
float weight;
}; // end class
#endif
然后,在代码后面,我还有另一个类(文档(,我将在其中比较这些术语的向量: document.cpp
/***
Defined in the header file:
std::vector<Term *> terms;
For brevity, I've removed other function definitions....***/
void Document::compareToDoc(Document *myDoc) {
for(auto const& term : myDoc->getTerms()) {
//auto it = find(terms.begin(), terms.end(), term);
auto it = find_if(terms.begin(), terms.end(),
[](const Term *t1){return t1->getTerm() = term->getTerm();});
if(it != terms.end()) {
std::cout << " .. found" << std::endl;
} // end if
} // end for
} // compareToDoc
我对lambda表达方式的样子感到非常困惑,以找到相同的术语。我尝试了STD ::查找路线(已评论(,但是何时匹配两个术语。我相信find_if是正确的功能,但我现在正在与lambda挣扎。
有人可以指向正确的方向吗?谢谢!
我弄清楚了。std :: find_if线必须看起来像这样:
auto it = find_if(terms.begin(), terms.end(),
[&term](const Term *t1){return t1->getTerm() == term->getTerm();});
相关文章:
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- std::ranges::elements_view,用于自定义类似元组的数据
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 运算符的歧义错误<<自定义 std::ostream 子类中的重载
- 自定义 std::shared_ptr 删除器
- 自定义 std::shared_ptr 或 boost::shared_ptr 以在 NULL 取消引用时引发异常
- 如何在自定义 std::ostream 类中使用 std::endl
- 如何实现自定义 std::streambuf 的 seekoff()?
- 如何使用自定义std::sort函数
- 为具有已替换运算符new的类自定义std::分配器
- 使用函数指针自定义std::设置比较器
- 自定义std::binary_search的比较函数
- 自定义std::set比较函数的参数
- 创建自定义std流实现时的编译器警告
- 无法捕获自定义std::runtime_error
- C++ 自定义 std::map<>导致内存冲突的键类
- 如何在c++中实现自定义std集合