gpt4 book ai didi

c++ - 字符数组的 vector

转载 作者:行者123 更新时间:2023-11-30 04:38:45 25 4
gpt4 key购买 nike

我有以下代码:

static unsigned char S0_gif[] = {
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x0f, 0x00, 0x0f, 0x00, 0x91, 0x02,
..
};

它是 gif 文件的十六进制表示。我有 500 张 gif 图片需要像这样存储,所以我想使用 vector 来使其更容易访问。

类似于:

vector<char[]> gifs; 
gif.push_back( {0x47, 0x49,..} );

Then in the loop:
{
MakeImage(gif[i], sizeof gif[i] );
}

我找不到合适的代码。任何帮助将不胜感激。

佩特里

最佳答案

你不能那样做,因为 vector 存储的是固定大小的结构,而你的结构是可变大小的。但是,您可以做的是存储 vector 的 vector :)

vector<vector<char> > gifs; // note the neccessary space between > >
gif.push_back( vector<char>( S0_gif, S0_gif + sizeof(S0_gif) ) );

Then in the loop:
{
MakeImage( gifs[i] );
}

另一个想法,如果它们确实存储为静态变量,则不要将数据存储两次:

vector< unsigned char * > gifs; 
vector< size_t > gifsizes;
gifs.push_back( S0_gif );
gifsizes.push_back( sizeof(S0_gif) );

Then in the loop:
{
MakeImage( gifs[i], gifsizes[i] );
}

免责声明:我可能忘记了一些&,请随时纠正我。

关于c++ - 字符数组的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973493/

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