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

时间:2014-02-10 21:18:12

标签: c++

例如,在Python中,我可以这样做:

if 'a' in ['a', 'b', 'c']:
   return 'Hi'

但是在C ++中,我不确定它的等效功能是什么。

2 个答案:

答案 0 :(得分: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 :(得分:2)

标准库容器实际上是用C ++的方式。

std :: vector是默认序列,但您也可以使用std :: set或其他,具体取决于您的用例。

如果您不知道使用哪一个,请坚持使用std :: vector,直到您有其他人的令人信服的理由为止。

此网站包含一些示例代码: http://www.cplusplus.com/reference/vector/vector/begin/

但是,我被告知以下网站更受同行评审: http://en.cppreference.com/w/cpp/container/vector