【发布时间】:2017-12-25 16:01:40
【问题描述】:
正如标题所说,我知道 unordered_map 的 cbegin() 具有恒定的复杂度,但它是恒定复杂度的迭代器的迭代。例如:cbegin()++; cbegin() + 10; cbegin() + i; cend()--; 所有这些都是 o(1) ???
【问题讨论】:
-
std::unordered_map提供的迭代器是前向迭代器。前向迭代器不支持加法:cbegin()+10和cbegin()+i无效。前向迭代器不支持递减:cend()--无效。 -
std::unordered_map可能实现为指向双向链表的指针哈希表,显然不支持随机访问迭代器
标签: c++ dictionary iterator complexity-theory unordered