Я пытаюсь заставить сортировку выбора работать с векторами. Я запускаю программу, и она делает первую часть несортированной, но затем говорит, что выражение: векторный индекс вне допустимого диапазона. Не могу понять, чем это вызвано.
#include <iostream>
#include <vector>
using namespace std;
template<typename Comparable>
void selectionSort(vector<Comparable> & toSort)
{
int pos, min, i;
for( pos = 0; pos < 30; ++pos)
{
min = toSort[pos];
for( i = toSort[pos + 1]; i < toSort[30]; ++i)
{
if( i < min)
{
min = i;
}
}
if( min != pos)
{
std::swap(toSort.at(min), toSort.at(pos));
}
}
}
int main(int argc, const char * argv[])
{
const int NUM_ITEMS = 5;
int array[NUM_ITEMS] = { 16, 271, 77, 40, 120 };
vector<int> sortingVector;
for(int i=0;i<NUM_ITEMS;i++) {
sortingVector.push_back(array[i]);
}
cout << "Before sort \n";
for(int i=0;i<NUM_ITEMS;i++) {
cout << sortingVector[i] << "\n";
}
selectionSort(sortingVector);
cout << "After sort \n";
for(int i=0;i<NUM_ITEMS;i++) {
cout << sortingVector[i] << "\n";
}
system("pause");
return 0;
}
for( pos = 0; pos < 30; ++pos)
, а затем вы обращаетесь кtosort[30]
? - person PaulMcKenzie   schedule 13.05.2014selection_sort
с использованием итераторов - person TemplateRex   schedule 13.05.2014toSort.size()
? - person Blastfurnace   schedule 13.05.2014