我最近只处理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 ++库中是否存在与此函数等效的内容?
答案 0 :(得分:3)
有功能
std::find(std::begin(a), std::end(a), needle) != std::end(a)
其中a
是数组或std::vector
或std::list
但在这种情况下,您还可以使用std::set
或std::unordered_set
。 (如果有很多元素,你应该这样做)
s.find(needle) != s.end()
答案 1 :(得分:1)
除了其他人提到的方式之外,还有std::binary_search可以说是名字很糟糕。如果元素存在则返回true,否则返回false。您需要一个已排序的容器来使用它。
bool found = std::binary_search(std::begin(container), std::end(container), element);
答案 2 :(得分:0)
如果您使用的是C ++载体:
if (std::find(vector.begin(), vector.end(), yourItem)!=vector.end() )
....
将等同于
if yourItem in vector:
答案 3 :(得分:0)
许多std
个容器都有一个名为find
的函数。但是,要获得实际性能,您需要使用std::unordered_set
(C ++ 11),因为它在底层实现中使用哈希表,使find()
操作在恒定时间内,而其他容器在线性时间内完成。