【发布时间】:2019-05-13 15:57:47
【问题描述】:
我们知道,当使用一个连续的内存块时,我们可以很容易地获得一个迭代器(这里是 &arra[0] 或 arra)并将迭代器传递给 std::sort。
例如:
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 是否有任何解决方法?
【问题讨论】:
-
你没试过吗?
-
不是一个精确的骗子,但有答案,试图找到一个更好的匹配:stackoverflow.com/questions/45123882/…
-
std::sort(arr, arr + len);恕我直言,对于std::sort(),无论开始和结束是堆栈地址还是堆地址,都没有任何区别。在这种情况下,重要的只是连续存储。 -
这里有一些相关信息:stackoverflow.com/questions/1719607/…
标签: c++ sorting memory-management heap-memory dynamic-arrays