【发布时间】:2014-07-31 02:58:11
【问题描述】:
我有一个元素列表,比如整数,我想检查我的变量(另一个整数)是否是列表中的元素之一。在 python 中我会这样做:
my_list = [1,2,3,4] # elements
my_var = 3 # my variable
my_var in my_list # returns boolean
如何在 C++ 中做到这一点?我想过使用std::list,但我找不到find 方法。我可以在std::set 结构中看到这种方法。
更深入地讲,问题是我的程序被赋予了一些唯一的 id(一个列表、一个集合等等),我遍历一长串输入数据(id)并检查它们是否包含在列表中(布尔每个迭代步骤返回的值)。而且我不确定我应该如何在 C++ 中做到这一点。
【问题讨论】:
-
标准::向量。在 c++ 中使用 std::vector 除非你有特殊的理由不这样做。
-
std::find是在容器中查找元素的方法 -
如果要查找值,为什么要使用向量?除非您的列表很小或者您使用稀疏向量并键入索引,否则您肯定希望
std::set或std::multiset提供比线性搜索更好的性能。 -
我的列表/集合会很小(几个元素,少于 10 个)。
-
std::find 更好,因为它独立于容器。