2010-11-05 110 views
0

我試圖使用boost::bindstd::sort函數。我想綁定到一個不帶參數的函數中,並指定一個int數組進行排序。使用std :: sort和boost :: bind

我遇到了綁定排序時如何指定爲模板參數的問題,如果我使用的是標準容器,我只是使用std::container<int>::iterator,但由於我使用的是數組,因此我無法弄清楚什麼使用。

下面是一些代碼,說明我的編譯問題:

const int NUM_VALUES = 100; 
    int nums[NUM_VALUES]; 
    for (int i=0; i<NUM_VALUES; ++i) 
    { 
    nums[i] = NUM_VALUES - i; 
    } 
    boost::function<void()> sortHolder = boost::bind(&std::sort<type?>, nums, nums+NUM_VALUES); 

任何人都知道在這裏用什麼模板參數?任何其他討論也歡迎。

回答

2

當您想將「迭代器」放入數組中時,可以使用指向數組中元素的指針。這樣的指針可以用作隨機訪問迭代器:

boost::function<void()> sortHolder = 
    boost::bind(&std::sort<int*>, nums, nums + NUM_VALUES); 
+0

你試過編譯這個嗎? – wilhelmtell 2010-11-05 02:42:27

+0

@wilhelmtell:整理。我沒有對我的lappy進行Boost,因此我使用了Visual C++ 2010'',並在答案中將'std ::'替換爲'boost ::'。我把東西弄髒了嗎? (真誠的道歉,如果我這樣做的話:'(如果是這樣,請隨時發佈更正,我會刪除這個並加快修正) – 2010-11-05 02:44:19

+0

@James這裏的問題是,std :: sort <>'甚至沒有解決'std :: sort '。 – wilhelmtell 2010-11-05 02:45:39