1. 程式人生 > >C++中 使用陣列作為map容器VAlue值的解決方法

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