c++ - 通过2个字段查找特定对象的 vector 元素

标签 c++ stl containers

<分区>

我有一个 S 类:

class S
{
public:
    S(int ssx, int ssy, int cnt)
    {
        sx = ssx;
        sy = ssy;
        count = cnt;
    }
    int sx;
    int sy;
    int count;
};

我想制作一个容器,它可以找到与 2 个参数匹配的元素的指针(迭代器)(比如对 {sx, sy},这对应该等于容器中的元素对)。 是否有任何 STL 方法,或者我应该使用圆圈 FOR(;;) 和 S* 的简单 vector 来实现搜索?

最佳答案

您可以使用 std::find_if()

首先,为两个成员声明一个谓词类

struct CmpS {
    int x;
    int y;
    CmpS(int x, int y) { this.x = x; this.y = y; }
    bool operator()(const S& s) const { return s.sx == x && s.sy == y; }
};

然后,调用 std::find_if()

std::vector<S> vec;
std::vector<S>::iterator iter = std::find_if(vec.begin(), vec.end(), CmpS(x, y));

关于c++ - 通过2个字段查找特定对象的 vector 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214096/

相关文章:

django - 如何在 docker-compose 中访问 Postgres 数据库

c++ - 如果我不使用异常,如何检查是否可以创建 map ?

c++ - 生成 float 随机数

c++ - 我应该将什么设置为 _ITERATOR_DEBUG_LEVEL

c++ - 在 std::set 中查找元素

c++ - 在循环外计算 map.end() 的优势

c++ - 无法从基于 libstdc++ 策略的数据结构中删除

java - 使一种语言在流控制和另一种语言中不支持原始空检查的字节码指令之间有什么区别?

c++ - 将 vector<T> 转换为 initializer_list<T>

c++ - std、boost 或其他具有隐式键的哈希表容器的广泛实现