如何使用一对迭代器[first,last]在模板中创建容器?

时间:2015-09-06 09:29:51

标签: c++ templates iterator containers

我写了一个MergeSort函数,这是它的声明:

void MergeSort(
    std::vector<int>::iterator first,
    std::vector<int>::iterator last) {
  // Get the same size as nums, so we can use some stable iteartors later.
  std::vector<int> tmp_vector(last - first);
  Sort(first, last, tmp_vector.begin());
  std::copy(tmp_vector.begin(), tmp_vector.end(), first);
}

但是,我尝试使用模板,我发现我不知道如何使用firstlast来创建tmp_vector,而我只知道{{1}的类型}}:

RandomIterator

据说it is not possible to get the type of the container of the iterators,所以任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以创建迭代器的value_type的向量。这不是原始的容器类型,但它会为您提供所需的临时容器。