我的问题在于我正在进行优化的自下而上(迭代)合并排序。为了节省一些计算,我需要一个与输入范围长度相同的缓冲区。我的目标是我的实现不仅可以排序数组,还可以排序任意容器(std::vector
,std::array
,甚至std::list
,如果需要的话)。
所以,我的主要问题是: 使用泛型,我如何不仅复制传递给排序的内容,还复制传递给它的结构。当然,我不想明确处理容器类型,而是能够复制数据和保存数据的数据结构。
注意:我的目标也是提出可以接受任何输入std::stable_sort
的实现。
注2 :基本上,给定
template<class _RandomAccessIterator>
void sort(_RandomAccessIterator first, _RandomAccessIterator last) {
Container<...> buffer = ...;
}
我希望Container
与first
具有相同的容器类型,last
来自;这首先是可能的吗?
(不要问我为什么要这样做;原因很好。)
答案 0 :(得分:0)
您可以将容器用作函数参数,然后使用operator=
:
template <class Container>
void sort (Container &c) {
auto copy = c; // Copied the container
//
}
如果您还想处理C数组,只需为它们添加重载:
template<class T, std::size_t N >
void sort(T (&arr)[N]);