| 类别:算法 | 组件类型:函数 |
template <class BidirectionalIterator>
inline void inplace_merge(BidirectionalIterator first,
BidirectionalIterator middle,
BidirectionalIterator last);
template <class BidirectionalIterator, class StrictWeakOrdering>
inline void inplace_merge(BidirectionalIterator first,
BidirectionalIterator middle,
BidirectionalIterator last, StrictWeakOrdering comp);
在元素如何进行比较方面不同。第一个版本使用直接合并运算符<。也就是说,输入范围和输出范围满足以下条件:对于每个迭代器对ij[middle, last)如此位于j*j < *i如此, 之前为false。第二个版本使用函数对象ij[middle, last)如此位于j*j < *i如此, comp为false.
int main()
{
int A[] = { 1, 3, 5, 7, 2, 4, 6, 8 };
inplace_merge(A, A + 4, A + 8);
copy(A, A + 8, ostream_iterator<int>(cout, " "));
// The output is "1 2 3 4 5 6 7 8".
}
备注[1] 请注意,你可以使用严格弱排序但不使用全排序,也就是说可能存在值[middle, last)x位于y, x < yx > y,且x == y[1] 请注意,你可以使用严格弱排序但不使用全排序,也就是说可能存在值[middle, last)x都为 false。(请参阅 小于可比较类型 要求,了解更全面的讨论。)如果既不是y也不是y < x. 但是,如果您正在使用总序(例如,如果您正在使用strcmp,或如果您正在对整数使用普通的算术比较),那么您可以忽略此技术区别:对于总序,相等性和等价性是相同的。