c++ - 定位/使用基于其元素之一的 vector

标签 c++ vector

VC++ 2010

假设我有以下内容:

struct person {
    char *  name;
    int     age;
};

然后我有一个包含这些的 vector :

std::vector <person> person_list;

现在,在推回其中一些元素之后,我如何根据其属性之一定位一个元素?最好的情况是,我希望它返回指向 vectors 元素 'where name = string' 交易类型的指针。

最佳答案

(请使用 std::string 而不是 char* 以避免泄漏或悬挂指针。)

你可以使用 std::find_if获取该元素的迭代器:

#include <algorithm>   // allow us to use  std::find_if

struct NameFinder
{
    std::string target;
    bool operator()(const person& pers) const
    {
        return pers.name == target;
    }
};

...

NameFinder finder;
finder.target = "whatever name you want";

std::vector<person>::iterator it = 
                std::find_if(person_list.begin(), person_list.end(), finder);

std::cout << "name = " << it->name << "; age = " << it->age << std::endl;

这里的 NameFinder 是一个函数对象,它检查一个人的名字是否与给定的目标匹配。

关于c++ - 定位/使用基于其元素之一的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8367802/

相关文章:

c++ - GCC什么时候定义NDEBUG?

c++ - 如何解密加密文本?

java - 如何使用JMF录制音频设备?

java - 如何在两个不同的类中设置和获取 Vector<Integer>?

c++ - 字数统计程序 C++

c++ - vector 重新排序的保证

c++ - 为什么 cin inside while 不停地获取用户输入?

c++ - C程序员开始写C++有哪些坏习惯?

r - 两个值之间的长度

c++ - Solaris C++ 流输入 >> 模板的运算符和模板