返回一个新的矢量实例

时间:2015-02-23 09:44:14

标签: c++ vector iterator return new-operator

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

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 std::vector<int>::vector(begin, end),即在一行中创建并返回向量而不是而不是被迫首先将其本地化。

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

提前致谢!

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

你应该可以这样做:

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