基于字符串获取struct element的vector值

时间:2016-08-19 06:14:22

标签: c++ vector struct

我有一个结构定义如下

struct a_t
{
    std::string ID;
    std::string Description;
};

并且结构a_t上的向量定义如下:

std::vector<a_t> aList

aList的内容如下:

ID    Description
=================
one_1  Device 1
two_2  Device 2
three_3 Device 3
....

给定字符串one,我应该搜索aList以查找该特定元素的描述。在这种情况下,我必须得到Device 1作为输出。

我应该怎么做呢?

2 个答案:

答案 0 :(得分:2)

试试这个:

for(std::vector<a_t>::iterator it = aList.begin(); it != aList.end(); ++it) {
    if ((*it).ID.find("one") != std::string::npos) {
        std::cout << (*it).Description<< '\n';
    }
}

答案 1 :(得分:2)

您可以使用std::find_if

<algorithm>
a_t item;
auto pred = [](const a_t & item) {
    int p = -1;
    p= item.ID.find("one");
    return p >= 0;
};
std::vector<a_t>::iterator pos=std::find_if(std::begin(aList), std::end(aList), pred);
std::cout <<"\nResult:" <<pos->Description;