如何使用算法Find()搜索Stl列表项

时间:2013-03-07 01:32:00

标签: list stl find

我有一个包含这种结构的节点的列表:

private:
    char namefield[30];
    char tam[3];
    char type[1];
};

我想用alghorithm类中的find函数查找和元素,但是我想用项的namefield属性来做,find函数有一个要查找的项目,但事情就是那个我想发送节点的属性而不是节点本身..

1 个答案:

答案 0 :(得分:0)

您可以使用find_if函数http://www.cplusplus.com/reference/algorithm/find_if/。您为结构定义谓词(比较函数),如果两个结构的名称字段都为true,则返回true。 或类似的东西

class Cmp : public std::unary_function<mystruct, bool> {
    std::string m_str;
public: 
    Cmp(const std::string &str) : m_str(str) {}
    bool operator()(const mystruct &val) const {
        return m_str.compare(val.namefield) ==0;
    }
};

std::find_if(cont.begin(), cont.end(), Cmp("foo"));

其中cont是结构的容器