以前討論過如何計算數字數組的中位數。例如,您可以參考What is the right approach when using STL container for median calculation?。現在我有一個不同的問題,那就是如何獲得原始STL容器中位數的索引。爲了說明我的問題,我舉一個例子:如何用STL獲得中位數的指數?
vector<int> myarray;
myarray.push_back(3);
myarray.push_back(1);
myarray.push_back(100);
myarray.push_back(20);
myarray.push_back(200);
int n = myarray.size()/2;
nth_element(myarray.begin(), myarray.begin()+n, myarray.end());
int median = myarray[n];
在上述代碼我可以得到中值,但我不能原矢量陣列中獲得它的索引(4)。有任何想法嗎?謝謝!
爲什麼你認爲中位數是向量中的元素之一? – 2012-07-19 07:59:24
如果使用正確(假設爲奇數長度的數組),則'n_element'會爲您提供一個到中值的迭代器。通過迭代器和'std :: distance',你可以得到你想要的。請參閱下面的答案。 – juanchopanza 2012-07-19 08:11:26
@EitanT這裏我舉一個例子,其中元素的數量是奇數。擴展元素數量均勻的情況很簡單。 – feelfree 2012-07-19 08:43:34