Помогите разобраться с итераторами. Почему с итераторами не сортируется и вылетает?
#include <iostream>
#include <vector>
#include <conio.h>
#include <time.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
vector <int> arr;
srand(time(NULL));
for (int i = 0; i <= 10; i++)
{
arr.push_back(rand() % 9);
}
cout << "Вектор заполнен случайными числами!" << endl;
//начальный элемент
vector<int>::iterator it_begin = arr.begin();
//текущий
vector <int>::iterator current;
vector <int>::iterator next;
cout << "######################" << endl;
for (current = arr.begin(); current != arr.end(); current++)
{
cout << *current << endl;
}
cout << "######################" << endl;
int temp;
vector<int>::iterator iteri;
vector<int>::iterator iterj;
iteri = arr.begin();
iterj = arr.end() - 1;
cout << *iterj;
for (int i = 0; i<10; i++)
{
while (iteri != arr.end())
{
while (iterj>iteri)
{
if (*(iterj - 1)>*iterj)
{
temp = *iterj;
*(iterj - 1) = *iterj;
*iterj = temp;
}
iterj++;
}
iteri++;
}
}
/*
for (current = arr.begin(); current<arr.end(); ++current)
for (next = current + 1; next < arr.end(); ++next)
if (current>next)
{
temp = *current;
*current = *next;
*next = temp;
}
*/
cout << "######################" << endl;
system("pause");
}
Проблема в строках
*temp = *current;
*current = *next;
*next = *temp;
Вы пытаетесь использовать итератор не для того, для чего он нужен.
Пишите так
temp = *current;
*current = *next;
*next = temp;
Либо добавьте #include <algorithm>
и пишите так
swap(*current, *next);
Можно iter_swap()
использовать. Примеры реализации классических алгоритмов сортировки на современном C++: How to implement classic sorting algorithms in modern C++?.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, пожалуйста, встречали ли вы шаблоны к алгорифмам Маркова? Если да, то дайте ссылку на источник