c++ - STL算法类

标签 c++ stl

有没有办法在对象容器中使用 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/

相关文章:

c++ - 是否可以为 Visual Studio Code 安装多个 CMake 扩展?

c++ - Qt : AddressBook tutorial 中的内存管理

c++如何打印每个整数在STL列表中出现的次数

c++ - 我可以依靠短路评估来检查 C++ 中的 vector 边界吗?

c++ - std::for_each() 和调用构造函数/析构函数

c++ - 在C中的txt文件的同一行中写入不同的用户输入数据

c++ - Dekker算法的原子实现

c++ - STL vector 错误 : Unknown type name

c++ - std::reverse_iterator 的缺点是什么?

c++ - CListCtrl 多次显示插入的项目