1
沒有匹配的功能,我不能用g ++ 4.3.2編譯下面的代碼:的std :: random_shuffle,compliler錯誤:呼叫
#include <stdlib.h> #include <algorithm> struct Generator { ptrdiff_t operator() (ptrdiff_t max) { return rand() % max; } }; // ... Generator generator; std::vector<size_t> indices; // fill vector std::random_shuffle(indices.begin(), indices.end(), generator); // error here!
爲什麼我的編譯器會引發以下錯誤在最後一行?
錯誤:調用「random_shuffle(__ gnu_cxx :: __ normal_iterator <長的無符號整型*,性病::矢量<長的無符號整型,性病::分配器<長unsigned int類型> > >,__gnu_cxx ::沒有匹配的功能__normal_iterator <長的無符號整型*,性病::矢量<長的無符號整型,性病::分配器<長unsigned int類型> > >,發電機&)」
提前感謝!
您不能實例化具有本地類型的模板。 'random_shuffle'是一個類模板,'Generator'是一個本地類型。這就是爲什麼如果你移動'Generator'使它不是本地類型的原因。 – 2010-09-03 08:14:22
這應該適用於C++ 11,但不適用於C++ 98。 – 2011-08-23 13:22:36