vector get_neighborID_lst_lst()

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;
    }