#ifndef _ALGOBASE_H
#define _ALGOBASE_H
#include"heap.h"
template<class InputIterator,class OutputIterator>
inline OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
{
return __copy_dispatch<InputIterator, OutputIterator>()(first, last, result);
}
inline char* copy(const char* first, const char* last, char* result)
{
memmove(result, first, last - first);
return result + (last - first);
}
inline wchar_t* copy(const wchar_t* first, const wchar_t* last, wchar_t* result)
{
memmove(result, first, last - first);
return result + (last - first);
}
template<class InputIterator,class OutputIterator>
struct __copy_dispatch
{
OutputIterator operator()(InputIterator first, InputIterator last, OutputIterator result)
{
return __copy(first, last, result, iterator_category(first));
}
};
template<class T>
struct __copy_dispatch<T*, T*>
{
T* operator()(T* first, T* last, T* result)
{
typedef typename __type_traits<T>::has_trivial_assignment_operator t;
return __copy_t(first, last, result, t());
}
};
template<class T>
struct __copy_dispatch<const T*, T*>
{
T* operator()(const T* first, const T* last, T* result)
{
typedef typename __type_traits<T>::has_trivial_assignment_operator t;
return __copy_t(first, last, r
SLT之算法实现
最新推荐文章于 2024-01-24 18:43:52 发布
本文详细介绍了C++ STL中的copy、partial_sort、sort等算法的实现原理,包括不同迭代器类型的处理和优化策略,如内存移动、插入排序、堆排序等。通过对源码的分析,有助于深入理解STL算法的内部工作机制。
摘要由CSDN通过智能技术生成