STL排序算法
STL sort algorithm
我正在尝试按升序对数字数组进行排序,但不知道我的代码出了什么问题(我对矢量完全陌生(。我应该首先将输入数组(数据(复制到STL向量中,然后将STL的排序算法应用到向量中,最后将向量复制回数组中。
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);
}
a1.reserve(size);
这会为项目分配位置,但不会更改向量的size()
。实际上,end()
与begin()
相同,因此您正在对空的vector
进行排序。你应该使用
a1.resize(size);
相关文章:
- C++选择排序算法中的逻辑错误
- 排序算法c++
- 下面是排序算法O(n)吗
- 为什么我的排序算法会更改数组值
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 排序算法问题(购买商店物品)(崩溃)
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 为什么在此排序算法实现中,向量明显比数组慢?
- C++ 多线程 - 与线程合并排序的算法替代
- C++中合并排序算法的奇怪行为
- 如果要求比较器是严格的总排序,而不仅仅是严格的弱排序,C++标准算法会更快吗?
- 我的排序算法程序中的堆错误
- 运行合并排序递归算法时EXC_BAD_ACCESS错误
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 解释一下这个排序算法是如何工作的?
- 检查向量是否使用除法和阻抗算法进行排序
- 使用sort()算法C 排序对象列表
- 算法排序1101001011
- 克鲁斯卡尔算法(排序)
- 用STL算法排序结构的动态数组