這是一個初學者的問題 - 我沒有用C++的標準庫工作太多。如何從一對矢量中提取第二個元素?
我有一個向量,其中包含我創建的元素對使用make_pair
。接下來,我對向量中的元素進行了排序。現在,我想從存儲在向量中的每一對中提取第二個元素。我知道我可以在標準庫中使用for_each
函數,但只允許您指定lambda函數。 如何提取第二個元素,以便將其放入單獨的OpenCV Mat?請幫助:)
編輯 我寫了一個小for_each
功能,這需要在向量進行排序,遍歷向量對於每一對,並輸出到cmd
每對中的元素。相反,我想在矢量上使用for
循環,提取每一對,並提取第二個元素。 :)
typedef std::pair<float, int> value;
vector2Sort.push_back(std::make_pair(Matches.col(c).at<float>(r),r));
std::sort(vector2Sort.begin(), vector2Sort.end(),
[&](const value& v1, const value& v2)
{
return v1.first < v2.first;
});
std::for_each(vector2Sort.begin(),
vector2Sort.end(),[&](const vector2Sort& v)
{
// TODO: put second element in OpenCV Mat
// display output
std::cout << v.second << ": " << static_cast<int>(v.first) << std::endl;
});
「提取」是什麼意思?元素就在那裏,隨你便。 –
不確定「提取」是什麼意思,但是要得到第二個元素,它就是它的聲音:'v.second'。 – Jashaszun
'for_each'是一個函數,而不是一個類。 – chris