有没有办法在对象容器中使用 find() 和 find_if() 等 STL 算法? 例如:使用 find() 在 Alfhabetic 类的 vector 中查找名称为“abc”的元素。
最佳答案
您可以定义一个比较谓词(仿函数)。这是一个通用的实现:
struct AlphabeticNameComp
{
AlphabeticNameComp( const std::string& toCompare)
: toCompare_( toCompare) { }
bool operator()( const Alphabetic& obj) const
{
return toCompare_ == obj.name();
}
private:
const std::string toCompare_;
};
在字母元素的 vector 中
std::vector< Alphabetic> vect;
您可以像这样运行搜索:
std::find_if( vect.begin(), vect.end(), AlphabeticNameComp( "abc"));
关于c++ - STL算法类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769026/