C++中 使用数组作为map容器VAlue值的解决方法

1)是用Vector容器代替数组

2)使用数组指针(需要注意局部变量的问题,指针是否需要用new创建)

int red [ 3 ]   = { 1 , 0 , 0 };
int green [ 3 ] = { 0 , 1 , 0 };
int blue [ 3 ]     = { 0 , 0 , 1 };
std
:: map < int , int (*)[ 3 ]> colours ;
colours
. insert ( std :: pair < int , int (*)[ 3 ]>(( GLUT_LEFT_BUTTON ,& red ));
colours
. insert ( std :: pair < int , int (*)[ 3 ]>(( GLUT_MIDDLE_BUTTON ,& blue ));
colours
. insert ( std :: pair < int , int (*)[ 3 ]>(( GLUT_RIGHT_BUTTON ,& green ));
//Watch out for scope here, you may need to create the arrays on the heap.

3)使用结构体来构造代替数组的元素,或把数组直接放在结构体内

struct Triple
{
   
int color [ 3 ];
};

 
//Later in code
Tripple red = { 1 , 0 , 0 }, green = { 0 , 1 , 0 }, blue = { 0 , 0 , 1 };
std
:: map < int , Triple > colours ;
colours
. insert ( std :: pair < int , Triple >(( GLUT_LEFT_BUTTON , red ));
colours
. insert ( std :: pair < int , Triple >(( GLUT_MIDDLE_BUTTON , blue ));
colours
. insert ( std :: pair < int , Triple >(( GLUT_RIGHT_BUTTON , green ));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章