繁体   English   中英

向量的一个索引中的多个元素

[英]Multiple Elements in one index of vector

我正在查看 geeks for geeks 的桶排序问题,其中他们将多个元素存储在同一向量索引处。

我的问题是我们如何将多个元素存储在向量中的同一索引处。

代码在这里

**void bucketSort(float arr[], int n)
{
      
    // 1) Create n empty buckets
    vector<float> b[n];
  
    // 2) Put array elements 
    // in different buckets
    for (int i = 0; i < n; i++) {
        int bi = n * arr[i]; // Index in bucket
        b[bi].push_back(arr[i]);
    }
  
    // 3) Sort individual buckets
    for (int i = 0; i < n; i++)
        sort(b[i].begin(), b[i].end());
  
    // 4) Concatenate all buckets into arr[]
    int index = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < b[i].size(); j++)
            arr[index++] = b[i][j];
}**

vector<float> b[n] => 这是一个二维向量。 因此,当您编写b[bi].push_back()时,这意味着您要在bi th 向量处插入一个元素,或者您可以说bi th 行。

在桶排序中,可以有多个桶。 所以这个二维向量代表了所有这些桶。 也就是说, b[i]代表第i个桶。

因此,您的问题的答案是,它们不会在向量中的同一索引处存储多个元素。 他们将元素arr[i]插入到bucket[n*array[i]]中,它本身就是一个向量。

为了立即回答您的问题,他们不会将多个元素存储在向量的单个索引中。 这是正在发生的事情:
vector<float>告诉编译器向量的每个元素严格来说都是一个浮点值。 但是,后面的b[n]部分是用于声明数组的符号。
最终,你最终得到vector<float> b[n] ,它基本上是一个数组,但数组的每个元素都是一个 vector 向量本身仅存储您指示编译器的浮点值。
b[bi].push_back(arr[i])被翻译成:
对于存储在名为 b 的数组的 biᵗʰ 索引中的向量,append 的浮点值是arr[i]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM