gpt4 book ai didi

c++ - 为什么在 C++ 中没有 sort(v)?

转载 作者:可可西里 更新时间:2023-11-01 15:02:34 25 4
gpt4 key购买 nike

我一直想知道为什么没有

sort(v);// same as std::sort(v.begin(),v.end())

如果我没记错的话,很久以前我看到一个 boostcon 剪辑,演讲者说这需要概念,但我不明白为什么。顺便说一句,我试过这个(在 VS 11 中),从我所看到的情况来看,它工作得很好。

template <typename Container>
void sortfx(Container& c)
{
std::sort(c.begin(),c.end());
}
int main()
{

std::vector<double> v;
//std::list<double> v; this causes compile errors
v.push_back(1701);
v.push_back(1729);
v.push_back(74656);
v.push_back(2063);
sortfx(v);
assert(std::is_sorted(begin(v),end(v)));

}

编辑:Bjarne 自己解释了这些概念,并以排序为例:) https://www.informit.com/articles/article.aspx?p=2080042&WT.rss_f=Article&WT.rss_a=An%20Interview%20with%20Bjarne%20Stroustrup&WT.rss_ev=a

最佳答案

这不是 std::sort(v) -> std::sort(v.begin(), v.end())需要概念的扩展,但备用排序函数采用附加参数进行比较 - std::sort(v.begin(), v.end(), compare) .

如果您有电话std::sort(v, compare) ,实现需要概念来将它与std::sort(start, end)区分开来对于非容器。

<algorithm> header 中充满了存在此类问题的模板。

关于c++ - 为什么在 C++ 中没有 sort(v)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174501/

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