如何检查元素是否在集合中?
是否有以下代码的更简单等价物:
myset.find(x) != myset.end()
原文由 fulmicoton 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何检查元素是否在集合中?
是否有以下代码的更简单等价物:
myset.find(x) != myset.end()
原文由 fulmicoton 发布,翻译遵循 CC BY-SA 4.0 许可协议
就是这个,一英里。
bool once(uintptr_t val) {
return visited.emplace(val).second;
}
不然怎么可能?
https://godbolt.org/z/9zP77jqMc
func5(unsigned long):
sub rsp, 24
mov QWORD PTR [rsp+8], rdi
lea rsi, [rsp+8]
mov edi, OFFSET FLAT:visited2
call std::pair<std::_Rb_tree_iterator<unsigned long>, bool> std::_Rb_tree<unsigned long, unsigned long, std::_Identity<unsigned long>, std::less<unsigned long>, std::allocator<unsigned long> >::_M_emplace_unique<unsigned long&>(unsigned long&)
add rsp, 24
mov eax, edx
ret
原文由 Orwellophile 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
在许多 STL 容器(例如
std::map
、std::set
、… 中检查是否存在的典型方法是: