У меня есть вектор int
, который может включать в себя максимум 4 элементов и минимум 2, например:как я могу найти повторяющиеся элементы в векторе
std::vector<int> vectorDATA(X); // x means unknown here
То, что я хочу сделать, это удалить элементы, которые повторяется, например:
vectorDATA{1,2,2} to vectorDATA{1,2}
vectorDATA{1,2,3} to nothing changes
vectorDATA{2,2,2} to vectorDATA{2}
vectorDATA{3,2,1,3} to vectorDATA{3,2,1}
vectorDATA{1,2,1,2} to vector{1,2}
и так далее
здесь кода просто:
cv::HoughLines(canny,lineQ,1,CV_PI/180,200);
std::cout << " line Size "<<lineQ.size()<< std::endl;
std::vector<int> linesData(lineQ.size());
std::vector<int> ::iterator it;
if(lineQ.size() <=4 && lineQ.size() !=0){
if(lineQ.size()==1){
break;
}else {
for (int i = 0; i<lineQ.size();i++){
linesData[i] = lineQ[i][1]; // my comparison parameter is the lineQ[i][1]
}
// на основании ответа, который я получил, я пытаюсь это сделать, но я действительно не умею продолжать?
std::sort(lineQ.begin(),lineQ.end(),[](const cv::Vec2f &a,const cv::Vec2f &b)
{
return ????
}
Я попытался использовать for and do while
петли, но я не понял, а функция std::adjacent_find
это есть условие, что элементы должны быть последовательными.
Возможно, это легко, но я просто не понимаю! благодарит за любую помощь!
максимум 4, минимум 4. Это не очень большой выбор размеров :) – jrok
@jrok жаль об этом! – Engine
@ Dukeling там у вас есть – Engine