gpt4 book ai didi

c++ - STL排序算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:30 25 4
gpt4 key购买 nike

我正在尝试按升序对数字数组进行排序,但不知道我的代码有什么问题(我对 vector 完全陌生)。我应该首先将输入数组(数据)复制到 STL vector 中,然后将 STL 的排序算法应用于 vector ,最后将 vector 复制回数组。

void STLSort(int data[],int size)
{
vector<int> a1;
a1.reserve(size);
for(int i=0;i<size;i++)
a1[i]=data[i];
sort(a1.begin(),a1.end());
for(int i=0;i<size;i++)
data[i]=a1[i];
}

谢谢。

最佳答案

可以直接对范围进行排序:

void sort_me(int * arr, unsigned int size)
{
std::sort(arr, arr + size);
}

int main()
{
int a[] = { 3, 11, 7 };
sort_me(a, sizeof(a)/sizeof(int));

// or even just in-place:
int b[] = { 12, -1, 88, 0 };
std::sort(b, b + sizeof(b)/sizeof(int));
}

更时髦:一个模板:

template <typename T, unsigned int N>
void sort_me_v2(T (&arr)[N])
{
std::sort(arr, arr + N);
}

int main()
{
int c[] = { -1, 2, -3, 4 };
sort_me_v2(c);
}

关于c++ - STL排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108712/

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