我一直在想,为什么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
呃,我猜是这样的。我应该把这个放在我的论坛上,而不是在这里。哎呀。 –