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