填充std :: vector时出现"vector <T>太长"错误

 禁令2502861143 发布于 2023-02-13 13:40

我试图用称为细胞的对象填充二维向量(817乘577).这些单元格具有一组成员值(浮点数,其他向量等).在某个时刻程序停止并抛出错误"vector too long".这是单元格的类定义和完整的循环:

struct cell
    {
    int x;
    int y;
    int country;
    vector popO;
    vector popS;
    vector Rainfall;
    double Cropland;
    vector outm;
    vector inm;
    vector AgeMaleFemale;
    vector AgeMaleFemaleMortality;
    double Fertility;
    };
vector> cells;
void fillCells(dataserver D)
        {
        cout<<"start filling"<> output(rows,vector(columns,X));
        cout<<"start loop"<

谷歌搜索了一下我发现sizeof(cell)乘以向量中的单元格数量应该小于vector :: max_size()

sizeof(cell)是144 - > 144*817*577 = 67882896

max_size是268345455

那时候所有的细胞都不应该有足够的空间,或者我错过了什么?提前致谢!

一些额外的信息:

在Windows 7 64bit上运行,使用Visual Studio 2010进行编译,32位

关于max_size的信息实际上来自这里: stl"vector 太长了"

1 个回答
  • 由于我没有足够的代表评论,所以你得到它作为答案.

    错误文本听起来像你在Windows机器上 http://msdn.microsoft.com/en-us/library/2af6btx2%28v=vs.80%29.ASPX

    而且我认为这与调整大小有关,因为创建一个太大的向量会抛出bad_alloc(在linux上,所以在windows上可能会有所不同).

    尝试并将所有调整大小的调用包装在一个

    try {
        // resize call here
    } catch (Exception &e) {
        std::cerr << e.what() << std::endl
                  << "Some text that identifies the line" << std::endl;
    }
    

    2023-02-13 13:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有