检查动态分配的数组C++中是否存在元素
Check if an element exists in a dynamic allocated array C++
例如,在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
相关文章:
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 如何检查QList中是否存在值
- 根据某个函数是否存在启用模板
- 地图计数确实很重要,或者只是检查是否存在
- C++中是否存在 std::conditional 的懒惰等价物?
- 无论如何,我可以确定构造函数是否存在吗?
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 堆分配的对象是否存在永不为空的唯一所有者?
- 扩展类中的可选 vir 函数,测试它在运行时是否存在
- 模板化检查是否存在带有参数列表的类成员函数?
- 是否存在包含负号的isdigit函数(过载)
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 检查编译时是否存在静态函数
- 向量是否存在行主要形式?
- 检查 TinyXML 中的元素是否存在
- 检测是否存在具有 C++17 的类成员
- 虚拟继承中是否存在多重继承?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?