我一直在想,爲什麼C++標準模板庫似乎沒有標準的存儲桶/庫(分佈)排序。這些在現代編程中似乎沒有得到充分利用,顯然是由於需要一種將對象轉換爲整數來排序的方法。這兩個對我來說似乎都比較簡單,所以爲什麼我們不在圖書館裏有這個?標準存儲桶或計數排序
template<class RandomAccessIterator, class Index, class index_type=unsigned int>
void std::distribution_sort(
RandomAccessIterator begin,
RandomAccessIterator end
index_type minval,
index_type maxval,
Index indexer,);
unsigned int indexer(const std::string& word)
{
switch(word.size()) {
case 0: return 0;
case 1: return (word[0]<<24);
case 2: return (word[0]<<24) | (word[1]<<16);
case 3: return (word[0]<<24) | (word[1]<<16) | (word[2]<<24);
default: return (word[0]<<24) | (word[1]<<16) | (word[2]<<8) | (word[3]);
}
}
int main() {
std::vector<std::string> data;
data.push_back("");
data.push_back("APPLES");
data.push_back("banana");
std::distribution_sort(data.begin(), data.end(), 0, ~0, indexer);
}
尚未投票結束,但它聞起來「沒有建設性」。 – amit
呃,我猜是這樣的。我應該把這個放在我的論壇上,而不是在這裏。哎呀。 –