IGL_INLINE void igl::adjacency_list( const std::vector<std::vector<Index> > & F, std::vector<std::vector<Index> >& A) { A.clear(); A.resize(F.maxCoeff()+1); // Loop over faces for(int i = 0;i<F.size();i++) { // Loop over this face for(int j = 0;j<F[i].size();j++) { // Get indices of edge: s --> d int s = F(i,j); int d = F(i,(j+1)%F[i].size()); A.at(s).push_back(d); A.at(d).push_back(s); } } // Remove duplicates for(int i=0; i<(int)A.size();++i) { std::sort(A[i].begin(), A[i].end()); A[i].erase(std::unique(A[i].begin(), A[i].end()), A[i].end()); } }