У меня есть два вектора vector<unsigned>
, а именно: vector<vector<unsigned> > sbp, vector<vector<unsigned> > sp
. Я хочу напечатать все эти векторы в sbp, которые также находятся в sp
. Оба вектора sbp
и sp
сохраняются (i) сначала по размеру; (ii), и когда размер равен, то векторы сортируются лексикографически. Для этого я написал следующий код. Кажется, что код дает ошибку сегментации. Я отлаживал код (путем печати значений), но я не могу найти источник ошибки.Нахождение векторов в C++
Может кто-то, пожалуйста, помогите мне найти то, что может быть источником ошибки сегментации. Кроме того, если есть какой-то алгоритм, который быстрее, чем это, то это будет действительно большой
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
vector<vector<unsigned> > sbp;
vector<vector<unsigned> > sp;
vector<vector<unsigned> >::iterator itSP=sp.begin();
for(vector<vector<unsigned> >::iterator itSbp=sbp.begin(),lSbp=sbp.end();itSbp!=lSbp;)
{
if(std::lexicographical_compare(((*itSbp)).begin(), ((*itSbp)).end(), (*itSP).begin(), (*itSP).end()))
{
itSbp++;
}else{
if((*itSbp)==(*itSP))
{
// cout<<(*itSbp)<<"\n";
itSbp++;
}else{
itSP++;
}
}
}
}
Я использую C++ 11 (GCC 4.8)
@DavidSchwartz он установлен здесь lSbp = sbp.end() –
ли, [что] (http://coliru.stacked-crooked.com/a/769e412f10ce39bb) даже компилировать? –
@MarcoA. теперь он должен –