0

我最近主要只处理 Python 编程,它们是一个非常有用的内置函数,称为“'in'

'in' 允许您访问变量中的所有元素。

例如;

def main():
y = ["Yes", "yes", "YES",]
n = ["No", "no", "NO"]
print "yes or no?\n"
response = raw_input()
if response in y:
    print "Wonderful, your response was ", response, "\n"
    exit(0)
if response in n:
    print "Alas, your response was ", response, "\n"
    exit(0)
else:
    print "Message not read; please attempt again.\n"
    main()

main()

如您所见,它使用“in”函数来检查字典中的字符串。

我想知道标准 C++ 库中是否有与此功能等效的功能?

4

4 回答 4

3

有功能

std::find(std::begin(a), std::end(a), needle) != std::end(a)

a数组或std::vector或在哪里std::list

但在这种情况下,您也可以使用std::setor std::unordered_set。(如果有很多元素,你应该这样做)

s.find(needle) != s.end()
于 2013-07-14T23:37:47.540 回答
1

除了已经提到的其他方式之外,还有std::binary_search,它的名字可以说是错误的。如果元素存在则返回 true,否则返回 false。你需要一个排序的容器来使用它。

bool found = std::binary_search(std::begin(container), std::end(container), element);

于 2013-07-14T23:43:28.717 回答
0

如果您使用 C++ 向量:

if (std::find(vector.begin(), vector.end(), yourItem)!=vector.end() )
....

相当于

if yourItem in vector:
于 2013-07-14T23:34:54.120 回答
0

很多std容器都有一个名为find. 但是,要获得实际性能,您将需要使用std::unordered_set(C++11),因为它在底层实现中使用哈希表,使find()操作在恒定时间内进行,而其他容器在线性时间内进行。

于 2013-07-14T23:36:41.847 回答