gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:44 24 4
gpt4 key购买 nike

我的写作水平很差

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com