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/