返回 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);
我试图检查 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);