使用迭代器 c++ 进行排序
Sort using Iterators c++
我第一次开始使用迭代器,我有一个任务进行排序,它对任何 int 容器进行排序,后来对任何类型的容器进行排序。 所以,我很快就迷路了。这是我的代码:
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
//*****************************************************
template <class Type, class Iterator>
void Sort (Type arr[], Iterator beginning, Iterator ending)
{
int * intPointer;
intPointer = arr;
for(auto i=beginning; i<ending-1; i++)
{
for (auto j=i+1; j<ending; j++)
{
if (*intPointer>*intPointer++) // PROBLEM
{
swap(&intPointer, &intPointer); //AND HERE
}
}
}
};
//----------------------------------------------------
template <class Type>
void swap(Type *value1, Type *value2)
{
int temp = *value1;
*value1 = *value2;
*value2 = temp;
return;
}
//----------------------------------------------------
template <class Type, class Iterator>
void display(Type arr[], Iterator beginning, Iterator ending)
{
int * intPointer;
intPointer = arr;
for(auto i=beginning; i<ending; i++)
{
cout << *intPointer << " ";
intPointer++;
}
cout << endl;
};
//*****************************************************
int main()
{
int test[10] = {5,6,8,9,4,11,0,45,100,14};
Sort(test, begin(test), end(test));
display(test, begin(test), end(test));
}
它显示正确(如果有问题告诉我(,但在 Sort(( 上崩溃。很高兴得到一些建议,如何解决指针问题,并获得一些建议,当我将使用此代码进行任何类型的操作时,如何不迷路。在其他主题中找不到正确的信息。
if (*i > *j) // PROBLEM FIXED
{
swap(*i, *j); //AND HERE FIXED
}
使用迭代器时,第一个参数中不需要数组。您可以将其删除:
void Sort(Iterator beginning, Iterator ending);
void display(Iterator beginning, Iterator ending);
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 如何在C++中对数组进行冒泡排序