【发布时间】:2017-12-22 12:00:35
【问题描述】:
struct ABC
{
int a;
string b;
};
我有一个指向上述结构的对象向量。并想根据变量“b”搜索向量?
我的逻辑如下。
vector<ABC> vec = ...;//vec has my objects
for(vector<ABC>::iterator it = vec.begin();
it != vec.end();
++it)
{
if(search_str == (it->b))//search string is my string which i need to search
{
}
}
我已经对上面的代码进行了广泛的测试,并且它可以工作。我想知道是否有更好的方法来实现这一点。也许使用 find()。
【问题讨论】:
-
这可以在现代 C++ 中的一行代码中完成:
std::find_if(vec.begin(), vec.end(), [&](const auto &e) { return e.b == search_str}); -
你想要什么输出?第一场比赛,如果有的话?所有匹配项目的新容器?还有什么?
-
我想要第一个匹配的迭代器。这样我就可以使用迭代器来提取值。
-
@SamVarshavchik 我在视觉工作室 2012 中不允许使用自动操作
-
@arjunjawalkar 你有
C++11.?
标签: c++ vector stl-algorithm