c++ - std::algorithm 的便利层

标签 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 测试了它,但它不起作用

最佳答案

首先,您的 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/

相关文章:

c++ - 在 Qt 中使用多个 Ui 和 Ui 类?

c# - C++ dll 在 C# 代码中抛出 EntryPointNotFoundException

c++ - Windows XP 是否自动将数组初始化为零?

javascript - 为列添加新的摘要行共享 2 个不同列的相同值并处理时间差

c++ - TLS 握手消息解析

android - 如何防止 Android 设备从 Qt 应用程序进入休眠状态

algorithm - 高效遍历变更列表

algorithm - 这是什么排序算法?

java - 使用动态规划复制书籍

algorithm - 在不使用浮点运算的情况下确定哪个整数最接近 n 的第 k 个根?