我的写作水平很差
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 测试了它,但它不起作用
最佳答案
首先,您的 no_fun()
应该真正采用一对迭代器(又名范围)而不是容器引用。 C++ 中仍然没有范围的原因,以及容器未在适当的地方隐式转换为这些范围的原因在这里是毫无疑问的。除此之外,您可能想要做的一件事是定义一个宏,例如
using std::begin;
using std::end;
#define ALL(c) begin(c), end(c)
然后就可以写了
std::sort(ALL(your_vec));
请确保不要将它放在头文件中。
关于c++ - std::algorithm 的便利层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36334267/