2
這將排序的矢量內載體:遞歸排序矢量的最簡單方法是什麼?
std::vector<
std::vector<int>
> my_vector {
{ 1, 3, 2 },
{ 52, 10, 20 },
{ 30, 2, 3 }
};
std::for_each(my_vector.begin(), my_vector.end(), [] (std::vector<int>& v)
{
std::sort(v.begin(), v.end());
});
實際上它並不最外矢量的元素進行排序,因此它不是一個「遞歸」的排序。遞歸排序會對所有向量進行排序,包括最外面的向量。例如,prettyprint.hpp將遞歸地打印容器。我不需要查看每個容器的所有元素,比如prettyprinter,只有範圍。
這是我嘗試迄今:
template <typename T>
void my_sort(std::vector<T>& v)
{
std::sort(v.begin(), v.end());
std::for_each(v.begin(), v.end(),
[] (T& vv)
{
my_sort(vv);
});
}
這不起作用,因爲當T = int
它試圖調用my_sort
與詮釋。有小費嗎?
輸出應該是這樣的:
[[1, 2, 3], [2, 3, 30], [10, 20, 52]] ^--- outermost vector ^---- inner vector
您是否試過模板專精? – 2014-12-07 15:56:52
「它實際上沒有對最外層向量的元素進行排序」 - 最外層向量元素*是向量*。 *準確地* *你希望得到的最外面的向量看起來像給你的原始來源,並且在問題*中這樣做*;不在評論中。 – WhozCraig 2014-12-07 15:57:40
你現在可以帶走downvote嗎?謝謝。 – user4334484 2014-12-07 16:04:59