[英]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.