2015-02-23 99 views
0

我试图检查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 std::vector<int>::vector(begin, end),就是创造并将该向量返回到一行,而不是被迫首先对其进行本地化。

我该如何解决这个问题,因为我不能直接按建议使用构造函数?

在此先感谢!

回答

3

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

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

完美的,我不知道这是正确的语法。谢谢!注意:时间限制后将被标记为答复。 – lassekokholm 2015-02-23 09:49:13

1

你应该能够做到这一点:

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