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

Check if an element exists in a dynamic allocated array C++

本文关键字:是否 存在 元素 C++ 动态分配 数组 检查      更新时间:2023-10-16

例如,在Python中,我可以做到:

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

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

使用 <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);
}

标准库容器确实是C++的方式。

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

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

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

但是,有人告诉我,以下网站经过了更多的同行评审:http://en.cppreference.com/w/cpp/container/vector