相关疑难解决方法(0)

如何从文件流中加速15M整数的加载?

我有一个预先计算的整数数组,它的固定大小为15M.我需要在程序启动时加载这些值.目前加载最多需要2分钟,文件大小约为130MB.是加速加载的方法吗?我也可以自由更改保存过程.

std::array<int, 15000000> keys;

std::string config = "config.dat";

// how array is saved
std::ofstream out(config.c_str());
std::copy(keys.cbegin(), keys.cend(),
  std::ostream_iterator<int>(out, "\n"));

// load of array
std::ifstream in(config.c_str());
std::copy(std::istream_iterator<int>(in),
  std::istream_iterator<int>(), keys.begin());
in_ranks.close();
Run Code Online (Sandbox Code Playgroud)

提前致谢.

解决了.使用接受答案中提出的方法.现在它只需要一眨眼.

全心全意感谢您的见解.

c++ stl stream

13
推荐指数
4
解决办法
1931
查看次数

处理char缓冲区

作为一名C++程序员,我有时需要使用C语言处理内存缓冲区.例如:

char buffer[512];
sprintf(buffer, "Hello %s!", userName.c_str());
Run Code Online (Sandbox Code Playgroud)

或者在Windows中:

TCHAR buffer[MAX_PATH+1]; // edit: +1 added
::GetCurrentDirectory(sizeof(buffer)/sizeof(TCHAR), &buffer[0]);
Run Code Online (Sandbox Code Playgroud)

上面的示例是我通常如何创建本地缓冲区(本地堆栈分配的char数组).但是,有许多可能的变化,因此我对您对以下问题的答案非常感兴趣:

  • 传递缓冲区是否&buffer[0]比传递更好的编程风格buffer?(我更喜欢&buffer[0].)
  • 是否有一个被认为对堆栈分配缓冲区安全的最大大小?
    • 更新:我的意思是,例如,在Mac,Windows,Linux桌面(非移动设备!)上跨平台桌面应用程序可以认为是安全的最高值.
  • 静态缓冲区(static char buffer[N];)更快吗?是否还有其他论据支持或反对?
  • 使用静态缓冲区时,可以使用返回类型const char *.这(通常)是好还是坏?(我确实意识到调用者需要自己创建副本以避免下一次调用会改变之前的返回值.)
  • 如何使用static char * buffer = new char[N];,永远不要删除缓冲区并在每次调用时重复使用它.
  • 我知道在(1)处理大缓冲区或(2)编译时未知最大缓冲区大小时应使用堆分配.堆栈/堆分配决策中是否还有其他因素?
  • 如果你喜欢sprintf_s,memcpy_s......变种?(Visual Studio一直试图让我相信这一点很长时间,但我想要第二个意见:p)

c c++

8
推荐指数
2
解决办法
2万
查看次数

如何检测我的程序可用的堆栈空间量?

我的Win32 C++应用程序充当RPC服务器 - 它有一组用于处理请求的函数,RPC运行时创建一个单独的线程并调用该线程中的一个函数.

在我的函数中,我有一个std :: auto_ptr,它用于控制在编译时已知的堆分配的char []数组.它在使用VC++编译时非常有效,但根据C++标准,它是未定义的行为,我想摆脱它.

我有两个选项:std :: vector或堆栈分配的数组.由于我不知道为什么有堆分配的数组,我想考虑用堆栈分配的数组替换它.该数组是10k元素,如果RPC运行时生成一个堆栈非常小的线程,我可以假设它面临堆栈溢出.

我想检测一下典型地为线程分配了多少堆栈空间,以及我的函数有多少可用(它的被调用者肯定会消耗一些分配的空间).我怎么能这样做?

c++ windows winapi visual-c++

6
推荐指数
2
解决办法
1958
查看次数

递归 - 你什么时候使用它,何时不使用它

递归 - 你何时会使用它,什么时候不使用它?

c# recursion

0
推荐指数
2
解决办法
691
查看次数

标签 统计

c++ ×3

c ×1

c# ×1

recursion ×1

stl ×1

stream ×1

visual-c++ ×1

winapi ×1

windows ×1