二维数组文件用fread读出并保存在一维数组里,希望读出其转置

fengflyflyfly 2013-11-06 10:53:09


二维数组文件用fread读出并保存在一维数组里,希望读出其转置。

就是我有一个bin文件,二维数组保存。 程序里面需要用其转置,而且是一维数组保存的。不知道可以可以用

fread读出来。

因为文件特别大,将文件读到二维数组里面,再转置到一维数组比较耗内存。
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-11-07
  • 打赏
  • 举报
回复
二维的转置对应一维的搬家。
turing-complete 2013-11-07
  • 打赏
  • 举报
回复
引用 4 楼 fengflyflyfly 的回复:
[quote=引用 2 楼 mougaidong 的回复:] 在内存的世界里,有一维和二维之分吗?
要转置![/quote] 有个博文仅供参考,应用场景比较苛刻。
max_min_ 2013-11-06
  • 打赏
  • 举报
回复
地址是连续的!可以直接通过地址偏移来作 或者用memcpy函数
turing-complete 2013-11-06
  • 打赏
  • 举报
回复
在内存的世界里,有一维和二维之分吗?
赵4老师 2013-11-06
  • 打赏
  • 举报
回复
int _fileno( FILE *stream ); int _chsize( int handle, long size ); int fseek( FILE *stream, long offset, int origin ); size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
zhaokai115 2013-11-06
  • 打赏
  • 举报
回复
#define N 100
#define M 200

#define A(i,j)    ((i) * N + (j))
#define B(i,j)    ((i) * M + (j))

void transport(int a[], int b[])
{
    int i, j;

    for (i = 0; i < N; ++i) {
        for (j = 0; j < M; ++j) {
            b[B(i,j)] = a[A(j,i)];
        }
    }
}
fengflyflyfly 2013-11-06
  • 打赏
  • 举报
回复
引用 2 楼 mougaidong 的回复:
在内存的世界里,有一维和二维之分吗?
要转置!

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧