簡體   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