【问题标题】:Generating binary number using bitset causing segmentation fault in c++使用位集生成二进制数导致c ++中的分段错误
【发布时间】:2021-03-26 17:10:01
【问题描述】:

生成从 0 到 255 的数字的二进制表示。这会导致分段错误。请赐教。

    vector<bitset<7>> vb;
    for (i = 0; i < 256; i++)
    {
        bitset<7> b(i);
        vb[i] = b;
    }

    //print 
    for(i=0;i<256;i++){
        cout<<vb[i]<<"\n";

【问题讨论】:

  • 您需要预先调整大小或使用 push_back,您当前正试图分配到一个空向量中(如果您使用过 .at(),我相信它会抛出异常但 operator[] 不会做这些检查,除了一些调试编译标志)

标签: c++ vector c++-standard-library bitset


【解决方案1】:

当你声明你的向量时它是空的

vector<bitset<7>> vb;

你可以用给定的大小初始化它

vector<bitset<7>> vb(256);

否则,简单地分配给空向量将超出范围,因为它没有(重新)为您尝试访问的元素分配内存

vb[i] = b;

【讨论】:

  • 知道了@Cory!谢谢!
【解决方案2】:

你的向量大小为 0。要么使用

vb.push_back(b);

或初始化一个大小,如:

vector<bitset<7>> vb(256);

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多