C++ stl集的时间复杂度

C++ stl集的时间复杂度,c++,stl,time-complexity,C++,Stl,Time Complexity,我在读stl的时间复杂性 它说: 在2*(count1+count2)-1(其中countX是距离)中最多线性 在firstX和lastX之间):比较和指定元素 我对“countX是firstX和lastX之间的距离”的说法感到困惑 请举例说明 我对“countX是firstX和lastX之间的距离”的说法感到困惑 从您链接到的同一页面上的示例中: first1,last1 将迭代器输入到第一个排序序列的初始和最终位置。>使用的范围是[first1,last1],它包含first1>和last1

我在读stl的时间复杂性

它说:

在2*(count1+count2)-1(其中countX是距离)中最多线性 在firstX和lastX之间):比较和指定元素

我对“countX是firstX和lastX之间的距离”的说法感到困惑

请举例说明

我对“countX是firstX和lastX之间的距离”的说法感到困惑

从您链接到的同一页面上的示例中:

first1,last1

将迭代器输入到第一个排序序列的初始和最终位置。>使用的范围是[first1,last1],它包含first1>和last1之间的所有元素,包括first1指向的元素,但不包括指向的元素 最后1点

first2,last2

将迭代器输入到第二个排序序列的初始和最终位置。使用的范围是[first2,last2]

因此,
count
是表示数据结构(示例中的数组)中第一个元素和最后一个元素的迭代器的排序元素之间的跳数(即跳数)。对于第一个元素(排序:
510525
),则为5

至于:

线性的

然而,如果Input另外满足RandomAccessIterator的要求,那么复杂性是恒定的


它仅仅意味着O(Set1中的元素数+Set2中的元素数)?你说“对于第一个(排序:5151525),它将是25-5=20”。它是否意味着复杂性取决于其中的元素而不是元素数?因为如果我设置s1={12000000000},设置s2={2},它是否意味着复杂性将是O(10^10)这是一个错误,在本例中距离是5。在本例中是的,它是元素的数量,但基本上是
std::distance
,它是跳跃的数量,是线性的或恒定的。你能强调一个时间复杂度不是线性的场景吗?因为它表示O(计数1+计数2)这对我来说是线性的。每个满足
RandomAccessIterator
的数据结构都有一个恒定的时间
std::distance