2015-02-23 83 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);