std :: algorithm的便利层

时间:2016-03-31 13:01:05

标签: c++ algorithm

我分层写作

void no_fun(std::vector<int> & vec)
{
     std::sort(vec.begin(), vec.end(),my_comp);
}

我想写这样的东西

void fun(std::vector<int> & vec)
{
     std::sort(vec,my_comp);
}

问题 我怎样才能实现

到目前为止我尝试了什么

namespace std
{

template<typename T>
void sort(std::vector<T> & vec)
{
    sort(vec.begin(), vec.end());
}

template<typename T, class Compare >
void sort(std::vector<T>& vec, Compare comp)
{
    sort(vec.begin(), vec.end(), comp);
}

}

我使用Visual Studio 2013对其进行了测试,但它不起作用

1 个答案:

答案 0 :(得分:3)

首先,你的no_fun()应该采用一对迭代器(也就是范围),而不是容器引用。 C ++中仍然没有范围的原因,以及为什么容器没有隐式转换为适当的范围在这里是不可能的。除此之外,您可能想要做的一件事是定义像

这样的宏
using std::begin;
using std::end;    
#define ALL(c) begin(c), end(c)

然后你可以写

std::sort(ALL(your_vec));

请确保不要将其放在头文件中。