Итак, в основном, я делаю код, который ищет элемент вектора внутри вектора. Пока я думал о подходе, его реализация вызвала ошибку сегментации.Я сузил проблему
В коде, если я разлагаю строку в цикле for, комментируя вышеизложенное, тогда отображаются все элементы B [i]. Почему тогда генерируется ошибка сегментации.Я думаю, что binary_return более или менее правильно, и если я заменю строку на binary_return(A,0,A.size(),B[1])
, то она будет работать.Вот код:
#include<iostream>
#include<vector>
using namespace std;
int binary_return(vector<int> a,int start,int end,int seek)
{
int mid = (start+end)/2;
//cout<<start<<" "<<seek<<" "<<mid;
if(end!=start)
{
if(a[mid]==seek)
{
return mid;
}
else if(a[mid]>seek)
{
return binary_return(a,start,mid,seek);
}
else if(a[mid]<seek)
{
return binary_return(a,mid,end,seek);
}
}
else
return -1;
}
int main()
{
vector<int> A{1,3,6,9,23};
vector<int> B{1,4,23};
cout<<B[0]<<B[1]<<B[2];
for(int i=0;i<B.size();i++)
{
cout<<binary_return(A,0,A.size(),B[i]);
//cout<<binary_return(A,0,A.size(),B[0]);
}
return 1;
}