【发布时间】:2016-08-11 14:33:04
【问题描述】:
在我不应该用-std=c++11编译的限制下,我想在下面的变量中添加一个额外的变量,
std::map<unsigned,
std::map<unsigned,
std::pair<
std::pair<int, int>,
std::pair<bool, bool>
>
>
>
temp;
并相应调整其初始化:
for (int i=0; i<100; ++i)
{
temp[i][i]=
std::pair<
std::pair<int, int>,
std::pair<bool, bool>
>
> (
std::pair<int, int> (intsX[i], intsY[i]),
std::pair<bool, bool> (boolsX[i], boolsY[i])
);
}
我想把结构改成这样:
std::map<unsigned,
std::map<unsigned,
std::pair<
std::pair<int, int>,
std::pair<
std::pair<bool, bool>,
double
>
>
>
>
temp;
现在,我不确定如何更改初始化,例如...
for (int i=0; i<100; ++i)
{
temp[i][i]=
std::pair<
std::pair<int, int>,
std::pair<
std::pair<bool, bool>,
double
>
> (
std::pair<int, int> (intsX[i], intsY[i]),
std::pair<std::pair, double> (
std::pair<bool, bool> (boolsX[i], boolsY[i]),
doublesX[i]
)
);
}
我可以按如下方式使用 c++11 初始化列表,但是是否可以在不使用此 c++11 功能的情况下执行此操作(?):
for (int i=0; i<100; ++i)
{
temp[i][i]=
std::pair<
std::pair<int, int>,
std::pair<
std::pair<bool, bool>,
double
>
> (
std::pair<int, int> (intsX[i], intsY[i]),
std::pair<std::pair<bool, bool>, double> ({boolsX[i], boolsY[i]}, doublesX[i])
);
}
【问题讨论】:
-
在你的设计中不要使用分层对和模拟类的映射,而是使用类——它们在没有 C++11 的情况下可用......
-
@BartoszKP 我应该清楚地说明上下文,道歉。这是在一个程序中,我无法更改布局,但会添加额外的双精度。
-
@James 也许用正常的方式重写所有代码更简单?像
pairVar.first.second.second.first这样的代码会让任何人感到困惑。 -
@BartoszKP 确实后面的代码很混乱!!!