在C++中检查动态分配数组中是否存在一个元素

3
例如,在Python中,我可以这样做:
if 'a' in ['a', 'b', 'c']:
   return 'Hi'

但在C++中,我不确定相应的函数是什么。


像这样吗?std::vector<std::string> x = {"a","b","c"}; if(x.end() != std::find(x.begin(),x.end(),"a")) return "Hi"; - Jerry Jeremiah
2个回答

11

使用来自<algorithm>std::find函数:

std::vector<char> dynamic_array{'a', 'b', 'c'};
auto exists = std::find(dynamic_array.begin(), dynamic_array.end(), 'a')
                  != dynamic_array.end();

如果你发现自己经常这样做,可以创建一个函数:

template<typename Container, typename T>
bool contains(Container const& container, T const& value) {
    using std::begin;
    return std::find(begin(container), end(container), value)
               != end(container);
}

1
我认为这是“auto”关键字被过度使用的情况之一。 - PlasmaHH
@PlasmaHH 我会说在任何情况下都不可能滥用 auto 关键字。实际上,如果这是 C++14,我会把 contains 的返回类型指定为 auto - user1804599
3
我认为这是_upvote_按钮被过度使用的典型案例。 - Lightness Races in Orbit

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接