
谁能帮我解释一下下列程序中,注释的那行(@1)为什么会报错,而(@2)却不报错?谢谢了
intmain(intargc,char**argv){std::vector<std::vector<std::string>>container;std::vecto...
int main(int argc, char** argv)
{
std::vector<std::vector<std::string> > container;
std::vector<std::vector<std::string> > container2 = container;
int size1 = container.size();
int size2 = container2.size();
printf("size1:%d\tsize2:%d\n", size1, size2);
//int size11 = container[1].size(); // @1
int size22 = container2[10].size(); // @2
printf("size22:%d\n", size22);
return 0;
}
IDE:VC6.0 展开
{
std::vector<std::vector<std::string> > container;
std::vector<std::vector<std::string> > container2 = container;
int size1 = container.size();
int size2 = container2.size();
printf("size1:%d\tsize2:%d\n", size1, size2);
//int size11 = container[1].size(); // @1
int size22 = container2[10].size(); // @2
printf("size22:%d\n", size22);
return 0;
}
IDE:VC6.0 展开
3个回答
展开全部
请注明是 编译时报错,还是 运行时 报错呢?
两个 vector 都没有 添加元素,似乎运行时都应该出错才对啊?!
两个 vector 都没有 添加元素,似乎运行时都应该出错才对啊?!
追问
编译的时候不报错哦, 运行的时候,注释的那行会报错。即:int size11 = container[1].size();
追答
因为 container 里面没有元素,所以你 访问 container[1] 就越界了嘛。
我在 VS2008 里面测试了, @1 和 @2 都会出错的。就是说,注释了 @1 那行后,@2 行就出错了。
建议不要再使用 VC6 了。太老了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询