(加速C ++)章节管理内存

时间:2013-02-20 00:06:38

标签: c++

我正在加速加速C ++,我陷入了练习10.3,我几乎不知道如何开始。我想在这里提到它不是家庭作业,我正在阅读它只是为了获得对C ++的信心。问题如下所示。

  

重写§8.1.1/ 140中的中值函数,以便我们可以调用它   使用矢量或内置数组。该功能应该允许   任何算术类型的容器。

上述问题的代码如下:

template <class T>
 T median( vector<T> v)
 {
    typedef typename vector<T>::size_type vec_sz;
     vec_sz size = v.size();
     if( size == 0 )
     {
         throw domain_error(" median of an empty vector");
     }
     sort( v.begin(), v.end() );
     vec_sz mid = size /2;
     return size%2 == 0 ? ( v[mid]+v[mid+1])/2 : v[mid] ;
 }

我不知道下一步该做什么。任何帮助或批评对我都有好处。 谢谢和问候

1 个答案:

答案 0 :(得分:1)

juanchopanza和Mooing Duck关于迭代器的提示可能是书籍练习的正确方法。但是,在实际应用中,我可能会编写一个接受数组的包装函数,并调用接受向量的原始函数:

template <class T, size_t N>
T median (const T (&a)[N])
{
    return median(std::vector<T>(a, a+N));
}