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
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
std
::
map
<
int
,
Triple
>
colours
;
colours
.
insert
(
std
::
pair
<
int
,
Triple
>((
GLUT_LEFT_BUTTON
,
red
));
colours
.
insert
(
std
::
pair
<
int
colours
.
insert
(
std
::
pair
<
int
,
Triple
>((
GLUT_RIGHT_BUTTON
,
green
));