2013-02-22 79 views
1

当我比较C++中的两个列表迭代器,比如说operator<时,我得到O(n)性能,因为我们必须遍历整个列表来查看哪个迭代器在前面?比较列表迭代器O(n)?

还是我得到O(1)性能,因为我的编译器做了一些聪明的事情?

+3

列表迭代器不支持'operator <'。 – 2013-02-22 17:46:47

+0

你应该用'std :: distance'函数来解释你的问题。 – 2013-02-22 20:30:35

+0

谢谢!事实上,如果我使用std :: distance函数来比较两个列表迭代器呢?那是O(n)吗? – dangerChihuahua007 2013-02-23 05:28:34

回答

10

由于list迭代器只有BidirectionalIterator s,所以不支持operator<,您会收到编译错误。