我的问题是:为什么下面的代码:
class A
{
public:
A()
{
test[0] = "three";
test[5] = "five";
test2[3] = 5.55;
}
void foo(int j)
{
for(int i = j+1; i <= 7; ++i)
{
try
{
std::cout<<test.at(i)<<"\n";
}
catch(const std::out_of_range&)
{
try
{
std::cout<<test2.at(i)<<"\n";
}
catch(const std::out_of_range&)
{
throw i;
}
}
}
}
virtual void bar()
{
}
std::map< int, float > test2;
std::map<int, std::string> test;
};
class B : public A
{
public:
B()
{
test3[6] = 15;
test3[7] = 42;
bar();
}
void bar()
{
int k = -1;
label:
try
{
foo(k);
}
catch(int i)
{
try
{
std::cout<<test3.at(i)<<"\n";
}
catch(const std::out_of_range&)
{
k = i;
goto label;
}
}
}
std::map<int, int> test3;
};
打印
three
5.55
five
15
并不是
three
5.55
five
15
42
?
我想要做的是迭代许多包含不同数据类型的地图,这些数据类型不能保存在 1 个容器中,这就是我想出的