in GraphSampling/meshCNN.h [54:92]
vector<int> get_neighborID_lst_lst(const vector<vector<Int2>> &pool_map, int previous_size)
{
int current_point_num = pool_map.size();
//first count the maximum number of neighbors
int max_neighbor_num = 0;
for (int i=0;i<pool_map.size();i++)
{
int neighbor_num = pool_map[i].size();
if(neighbor_num > max_neighbor_num)
max_neighbor_num = neighbor_num;
}
vector<int> neighborID_lst_lst_flat;
for (int i=0;i<pool_map.size();i++)
{
vector<int> neighborID_lst = vector<int>(max_neighbor_num*2);
for (int j =0; j <pool_map[i].size(); j++)
{
neighborID_lst[j*2] = pool_map[i][j][0]; // id
neighborID_lst[j*2+1] =pool_map[i][j][1];// dist
}
if(pool_map[i].size()<max_neighbor_num)
{
for (int j=pool_map[i].size(); j<max_neighbor_num;j++) {
neighborID_lst[j * 2] = previous_size;
neighborID_lst[j * 2+1] = -1;
}
}
neighborID_lst_lst_flat.push_back(pool_map[i].size());
neighborID_lst_lst_flat.insert(neighborID_lst_lst_flat.end(), neighborID_lst.begin(), neighborID_lst.end());
}
return neighborID_lst_lst_flat;
}