我试图检查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)
,即在一行中创建并返回向量而不是而不是被迫首先将其本地化。
我怎么会这样做,因为我不能按建议直接使用构造函数?
提前致谢!
答案 0 :(得分:3)
你需要像这样调用它的构造函数:
return std::vector<int>(begin, end);
答案 1 :(得分:1)
你应该可以这样做:
return std::vector<int>(begin, end);