gpt4 book ai didi

c++ - 在 C++ 中使用 vector 的 vector 进行基数排序会崩溃

转载 作者:行者123 更新时间:2023-11-28 03:44:03 26 4
gpt4 key购买 nike

我正在尝试编写一个基数排序,它使用一个随机数 vector 和一个 vector vector 作为 bin。

这是代码,错误出在收集和/或分发函数中的某个地方 - 任何帮助将不胜感激,我只是没有发现它。它没有给我错误消息,只是崩溃了。这是我的代码:

#include <iostream>
#include <vector>
#include <ctime>


using namespace std;

void distribute(vector<int> & myList, vector< vector<int> > & bins, int place);
void gather(vector<int> & myList, vector< vector<int> > & bins);
int getNumDigits(vector<int> myList);


int main(){
int place = 1;
vector<int> myList(20);
vector< vector<int> > bins;


//initialize the vector
srand((unsigned)time(0));

for (int i = 0; i < myList.size(); i++){

myList[i] = rand() % 300;
}

//get mumber of digits of largest

place = getNumDigits(myList);

cout << "Unsorted list: " << endl ;
for (int i = 0; i < myList.size(); i++){

cout << myList[i] << " ";
}

distribute(myList, bins, place);
gather(myList, bins);

cout << endl << "Sorted once " ;

for (int i = 0; i < myList.size(); i++){

cout << myList[i] << " ";
}

system("pause");
return 0;

}//end main

void distribute(vector<int> & myList, vector< vector<int> > & bins, int place){


bins.clear();

int modder = place * 10;


for (int i = 0; i < myList.size(); i++){

bins[(myList[i]) % modder].push_back(myList[i]);

}//endfor (myList[i]) % modder



}//end distribute


void gather(vector<int> & myList, vector< vector<int> > & bins){

for (int i = 0; i < 10; i++){
for (int j = 0; j < bins[i].size(); j++){

myList.push_back(bins[i][j]);

}//end inner
}//end outer

}

int getNumDigits(vector<int> myList){

int place = 0;
int biggest = 0;
for (int i = 0; i < myList.size(); i++){

if (myList[i] > biggest)
biggest = myList[i];

}

while (biggest > 0){
place++;
biggest = biggest / 10;
}

return place;

}

最佳答案

for (int j = 0; j < bins[i].size(); i++)看起来不对。

我想你的意思是j++ , 不是 i++ .

关于c++ - 在 C++ 中使用 vector 的 vector 进行基数排序会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com