vector<pair<int,int>> *p 这种类型的指针初始化以及调用之类的理解

//vector<pair<int,int>> *for_column_index; // It is wrong!

vector<pair<int,int>> *for_column_index = new vector<pair<int,int>>[m_number_of_model_points] ; // Why can not use the point form???

//vector<pair<int,int>> *for_column_index = new vector<pair<int,int>>[m_number_of_model_points + 100] ; // also ok

//vector<pair<int,int>> *for_column_index = new vector<pair<int,int>>[m_number_of_model_points - 10] ; // also ok

// vector<pair<int,int>> *it4 = for_column_index + m_number_of_model_points;


// vector<pair<int,int>>::iterator it3;
//for(int i=0;i<m_number_of_model_points;i++)
//{
// //it3 = for_column_index->begin();
// //it3->first = 0;it3->second = 0; // Intialization, you can do such assignment, oh,my god, you should use the push operator
// // the above is only for getting or printing the value not assignment
// // it3++;
// for_column_index->push_back(pair<int,int>(i,i)); // Initialization by using push operator ,个人觉得不需要初始化了。


//}
    /*vector<pair<int,int>>::iterator it3 = for_column_index->begin();
for(it3; it3<for_column_index->end();it3++)
{
cout<<" "<<it3->first<<" "<<it3->second<<" ";
}*/



Get_Valid_Data(true_matching_points,valid_points_num,all_point_Nneighbor,num_for_address,
arr,for_column_index,maxNeighborNum);


// It is wrong, due to the address of for_column_index have changed
//vector<pair<int,int>>::iterator it5 = it3;
//for(it5;it5<for_column_index->end();it5++)
//{
// cout<<" "<<it5->first<<" "<<it5->second<<" "; // These are wrong values
//}


// you can do like this
/*for(vector<pair<int,int>>::iterator it4 = for_column_index->begin();it4<for_column_index->end();it4++)
{
cout<<" "<<it4->first<<" "<<it4->second<<" ";

}*/


这里想要说明的是vector<pair<int,int>> *for_column_index = new vector<pair<int,int>>[m_number_of_model_points] ; 这种类型的指针

new之后不需要进行push之类的初始化操作,不像通常的一维或者2维数组那样初始化。 我觉得应该是这样,但是没有完全理解。

最好还是采用向量的引用来作为参数传递,这样就可以比较好的使用iterator操作了。

vector<pair<int,int>> *for_column_index = new vector<pair<int,int>>[m_number_of_model_points] ;

向量这种类型的指针不像通常的一维array(在定义的时候new出来的那段内存大小就不变了),这个时候可以随便new大小,不影响最终指向的内存区域,但是必须在定义的时候new下,防止成为野指针。我靠,不搞了,这个都花了我1个小时了,这个水有点小深。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值