gpt4 book ai didi

c++ - 在 C++ 中返回位集 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:24 25 4
gpt4 key购买 nike

<分区>

我有一个函数返回包含其输入的 ASCII 值的 bitset vector 。

typedef bitset<64> block;

vector<block> input_to_binary(string s)
{
vector<block> v;
block blk;
int j = blk.size() - 1;


for (int i = 0; i < s.size(); i++)
{
bitset<8> b(s[i]);

for (int k = b.size() - 1; k >= 0; k--)
{
blk[j] = b[k];
j--;
}


if (i % 8 == 7 || i == s.size() - 1)
{
// either the block is full now or this is the last character of the input
v.push_back(blk);
j = blk.size() - 1;

函数内部一切正常:

            cout << "Just after the push:" << endl;
for (int i = 0; i < v.size(); i++)
{
block blk = v[i];
for (int i = blk.size() - 1; i >= 0; i--)
cout << blk[i] << "\t";
}
}

}

return v;
}
    Just after the push:    0   1   0   0   1   0   0   0   0   1   1   0   0   1   0   1   0   1   1    0   1   1   0   0   0   1   1   0   1   1   0   0   0   1   1   0   1   1    1   1   0   0   1   0   1   1   0   0   0   0   1   0   0   0   0   0   0       1   0   0   1   0   0   0

After returning to main() though, the bitsets' data are lost:

int main()
{
string s = "Hello, Hi, Goodbye";
vector<block> v = input_to_binary(s);
cout << "v.size() is " << v.size() << endl;
for (int i = 0; i < v.size(); i++)
{
// block current = v[i]; // tried either one
block current(v[i]);
cout << "block no. " << i << " with size " << current.size() << endl;
for (int j = current.size() - 1; j >= 0; j--)
cout << current[i] << "\t";
cout << endl;
}

}
    v.size() is 3    block no. 0 with size 64    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0      0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0   0   0   0   0   0   0

为什么会这样?是不是关于 bitset 的复制构造函数,我认为它应该可以正常工作?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com