我想對包含int iterator的矢量vec進行排序,指向另一個向量int_vec中的元素。我想用下面的比較功能:IT1 < IT2當且僅當用std :: sort排序迭代器
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()].
如果指數是第三向量指定迭代器的關鍵。現在向量索引是A和INT_VEC的構造函數的內部數組是一類答:我想只是傳遞這樣一個匿名函數的成員變量:
std::sort(vec.begin(),flow.end(), [&index,&edges](const int_iter it1 ,const int_iter it2) -> bool
{
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()];
})
,但我得到一個錯誤,告訴我,成員對象不能被捕獲。確切的錯誤信息是:
'this' cannot be implicitly captured in this context
index[it1 - int_vec.begin()] < index[it2 - int_vec.begin()];.
我也試着只需要聲明一個外部比較功能,但它不是我清楚我怎麼可以綁定兩個固定值,它(我讀到的boost ::綁定,它看起來像解決正是這個,但我寧願不下載額外的庫)。
*我想排序包含指向另一個向量中的元素INT迭代器向量VEC INT_VEC * - 就在這個孤單是一個糟糕的主意,因爲矢量迭代器,如果無效矢量調整大小。 – PaulMcKenzie
但矢量不會調整大小 – user3726947
爲什麼它是一個向量呢?使用'std :: array'。 – user3684240