gpt4 book ai didi

c++ - 我可以在堆分配的原始数组上使用 std::sort 吗?

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

我们知道,当使用连续的内存块时,我们可以很容易地得到一个迭代器(这里是 &arra[0]arra)并将迭代器传递给 std::排序。

例如:

int arra[100];
for (int i = 0; i < 100; i++) {
arra[i] = rand() % 32000;
}
for (int i = 0; i < len; i++)std::cout << arra[i]<<" ";
std::sort(arra,arra+100);

现在如果我有一个分配给堆的数组,比如这里的arr:

int len;
len = 100;
int* arr = new int[len];
for (int i = 0; i < len; i++) {
arr[i] = rand() % 32000;
}

我不知道我是否可以获得这个数组的迭代器,所以我可以对这个数组使用 std::sort 吗?如果不是,是否有在此类数组上使用 std::sort 的任何变通方法?

最佳答案

指针确实符合 RandomAccessIterator 的标准这是 std::sort 所要求的.它们指向栈内存还是堆内存并不重要,只要它们指向同一个(连续的)数组即可。所以你可以简单地使用:

std::sort(arr, arr + len);

也就是说,std::vector 可能是在堆上分配数组的更好选择。它会让您免去自行管理内存的麻烦。

关于c++ - 我可以在堆分配的原始数组上使用 std::sort 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56115960/

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