我想使用boost :: phoenix庫對一個向量進行排序。 Foo類有一個成員函數'int getvalue()'。目的是使用'getvalue()'返回的值對矢量進行排序。但缺少一些東西。因爲':: second不是類或命名空間',所以我得到編譯器錯誤boost :: phoenix ::排序錯誤
std::vector<std::pair<int, Foo> > fooVec;
boost::phoenix::sort (boost::phoenix::bind(&std::pair<int, Foo>::second::getvalue(), boost::phoenix::arg_names::arg1) (*fooVec.begin()), std::less<int>());
有人可以請解釋這一點。我需要做什麼改變才能完成這項工作?
謝謝。 PS:我知道我可以使用函數對象/ lambda或soemthing類似,但我想嘗試boost :: phoenix。
我不認爲這會排序你的向量。第一個參數必須是要排序的範圍。既然你做了一個鳳凰表達式,你的向量不會被改變。 – mkaes
您能否如此善待我告訴我正確的做法。謝謝... – polapts
我添加了一個例子,我將如何使用phoenix在這種情況下的答案。但它不同於你的方法,因爲我不能再使用std :: less了。但也許它有幫助。 – mkaes