我回答了similar question 11分鐘前。這裏的ide是一樣的:循環結束排序範圍。
下面是相同的代碼,如適用於您的問題對方的回答(我只是換成了小於-關係的平等):
auto find_pairs(std::vector<int>& arr1, std::vector<int>& arr2, int diff)
{
std::vector<std::pair<int,int> > ret;
std::sort(std::begin(arr1), std::end(arr1));
std::sort(std::begin(arr2), std::end(arr2));
auto it1= std::begin(arr1);
auto it2= std::begin(arr2);
while(it1!= std::end(arr1) && it2!= std::end(arr2))
{
if(std::abs(*it1-*it2) < diff)
{
ret.push_back(std::make_pair(*it1,*it2));
++it1;
++it2;
}
else if(*it1<*it2)
{
++it1;
}
else
{
++it2;
}
}
return ret;
}
這裏是您的示例應用程序,
int main()
{
std::vector<int> arr1 = {2,3,4};
std::vector<int> arr2 = {14,12,250};
int diff=11;
auto pairs = find_pairs(arr1, arr2, diff);
for(auto& i : pairs)
{
std::cout<<i.first<<" "<<i.second<<std::endl;
}
}
有了這一個取得該OP的所需答案:
2 12
4 14
DEMO。