我分层写作
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对其进行了测试,但它不起作用
答案 0 :(得分:3)
首先,你的no_fun()
应该采用一对迭代器(也就是范围),而不是容器引用。 C ++中仍然没有范围的原因,以及为什么容器没有隐式转换为适当的范围在这里是不可能的。除此之外,您可能想要做的一件事是定义像
using std::begin;
using std::end;
#define ALL(c) begin(c), end(c)
然后你可以写
std::sort(ALL(your_vec));
请确保不要将其放在头文件中。