gpt4 book ai didi

c++ - std::find 函数可以用于我们自己的类吗?

转载 作者:行者123 更新时间:2023-11-28 01:04:39 27 4
gpt4 key购买 nike

我有一组类(class)。每个类都继承自另一个类。关系如下。 (我只是发布一个类如何从另一个类继承,只是为了让大家了解)

class LineNumberList : public MyVector <LineNumber > //top class
class MyVector : public std::vector <Type>
class LineNumber : public ElementNumber

class ElementNumber { //this is the base class
protected:
int number;
public:
ElementNumber(int p){number=p;}
// some more codes //
}

现在,我想实现一个可用于在我的顶级类中查找元素的函数,即LineNumberList。我尝试使用标准的 find 函数,但它不起作用。任何人都可以帮助我为我的案例实现类似的查找功能,非常感谢。

最佳答案

“我尝试使用标准的查找功能,但它不起作用。”对我有用:

#include <vector>
#include <iostream>
#include <algorithm>

class ElementNumber {
protected:
int number;
public:
ElementNumber(int p) :number(p) {}
bool operator==(const ElementNumber&e) { return number == e.number; }
};
class LineNumber : public ElementNumber {
public:
LineNumber(int p) : ElementNumber(p) {}
};
template <class Type>
class MyVector : public std::vector<Type> {
};
class LineNumberList : public MyVector<LineNumber> {
};

// EDIT: add local implementation of std::find
template<class InputIterator, class T>
InputIterator myfind ( InputIterator first, InputIterator last, const T& value )
{
http://www.cplusplus.com/reference/algorithm/find/
for ( ;first!=last; first++) if ( *first==value ) break;
return first;
}

int main() {
LineNumberList ll;
LineNumber l(7);
ll.push_back(l);
std::cout << std::boolalpha << !(std::find(ll.begin(), ll.end(), l) == ll.end()) << "\n";
std::cout << std::boolalpha << !(::myfind(ll.begin(), ll.end(), l) == ll.end()) << "\n";
}

关于c++ - std::find 函数可以用于我们自己的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com