形成算法时未知的"vector"和"std"

Unknown typename "vector" and "std" when forming an algorithm

本文关键字:vector std 未知 算法      更新时间:2023-10-16

我是C 的初学者,在此任务中,我制作了一个程序,使用Bucket stort and Algorithm按升序顺序排列给定数组。关于使用矢量库以及表达用于包含数组的变量时,我遇到了许多错误。

是否有更简单的自然数实现?我发现的示例是使用桶形排序来对字母数字进行排序……等等,这使我感到困惑地了解应用于正数时的基础知识。

#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
//function declaration
void display(int arr[], int size);
int getMax(int arr[], int size);
void bucketSort(int arr[], int size);
using namespace std;
void display(int arr[], int size) {
    int i, m;
    for(i = 0; i < size; i++) {
        cout << m; {
            m = arr[i];
        }
    }
    return m;
}
void bucketSort(int arr[], int size) {
    //variables
    int max, bucket = 10, divider, i, j, k;
    //10 buckets
    vector B[bucket];
    //find max and min
    max = getMax(arr, size);
    divider = ceil(float(max + 1) / bucket);
    //insert element into bucket
    for(i = 0; i < size; i++) {
        j = floor( arr[i] / divider );
        B[j].push_back(arr[i]);
    }
    //sort elements in the buckets
    for(i = 0; i < bucket; i++) {
        sort(B[i].begin(), B[i].end());
    }
    //append back the elements from the buckets
    k = 0;
    for(i = 0; i < bucket; i++) {
        for(j = 0; j < B[i].size(); j++) {
            arr[k++] = B[i][j];
        }
    }
}
int main(void) {
    //unsorted elements
    int arr[] = {22,45,12,8,10,6,72,81,33,18,50,14};
    //size of the array
    int n = sizeof(arr)/sizeof(arr[0]);
    //output unsorted elements
    display(arr, n);
    //sort the elements
    bucketSort(arr, n);
    //display sorted elements
    display(arr, n);
    return 0;
}

您不能只要求一个向量...您必须告诉它,的向量是什么

在您的情况下,您似乎想要一系列int s的向量,所以:

vector<int> B[bucket];

您的下一个问题是您不能具有可变大小的数组。

请参阅您的C 书籍以获取有关所有这些内容的更多信息。

相关文章: