返回 Vector 的新实例

Returning a New Instance of Vector

我试图检查 The C++ Classes Tutorial,但是,我无法找到以下问题的答案。考虑使用迭代器作为参数的合并排序的简单实现:

std::vector<int> mergesort(std::vector<int>::iterator begin, std::vector<int>::iterator end)
{
    if (end - begin <= 1)
    {
        std::vector<int> c(begin, end);
        return c;
    }
    int mid = (end - begin) / 2;

    std::vector<int> a = mergesort(begin, begin + mid);
    std::vector<int> b = mergesort(begin + mid, end);

    return merge(a, b);
}

在递归的基本情况下,我写 std::vector<int> c(begin, end) 然后 return 向量,我想改为写 return std::vector<int>::vector(begin, end),即创建和 return 一行中的矢量,而不是被迫先定位它。

我该怎么做,因为我不能按照建议直接使用构造函数?

提前致谢!

你需要像这样调用它的构造函数:

return std::vector<int>(begin, end);

你应该可以做到这一点:

return std::vector<int>(begin, end);