在c++中使用大尺寸矢量的可视化工作
visual work with large size vectors in c++
我想使用大尺寸矢量。但是这些向量在内存中分配了很大的大小,并导致了错误。。
size=10000;
//2D vector doubles
vector<vector<double>> vecA(size,vector<double>(size));
vector<vector<double>> vecB(size,vector<double>(size));
vector<vector<double>> vecC(size,vector<double>(size));
我想在程序中的所有代码中使用它们。什么是最佳解决方案?
首先谈谈你的问题:
vector<vector<double> > v;
cout<< v.max_size();
这段代码给了我输出268435455
和768614336404564650
(当编译为64位时)。此外,在我的机器中,它没有抛出任何编译错误,但程序挂起(即分配从未在32位中发生)。尽管在64位中,所有三个矢量都被分配,没有错误。因此,基本上这可能是vs12中的一个错误,也可能不是错误,只是是一个未定义的行为(因为c++标准不考虑任何关于此分配的内容)
现在谈谈您的解决方案:您可以使用磁盘上的数据结构,这会慢得多。有很多图书馆可以为你做这件事。你可以在这里查一下。
与类似的错误
您需要的工具取决于您试图实现的目标。然而,几乎可以肯定的是,预分配的大向量中的预分配的大型向量不是正确的选择。
如果向量大小保持不变,你可能会创建一个类似矩阵的东西,在这种情况下,你最好使用矩阵库,比如优秀的Eigen。
如果你用大矩阵进行矩阵计算,那么值得考虑的是稀疏矩阵(换句话说,数据是稀疏的)的性能是否会更好。
如果你在用大数据阵列做数学运算,你可能也应该考虑使用GPU库,因为这样可以获得10倍到100倍的速度。我相信Eigen可以使用GPU,但我自己从来没有这样做过。
如果您正在构建一个不会像矩阵一样使用的大表,那么您可能需要一些其他数据结构,也许是磁盘和数据库上的数据结构。请发布更多关于您尝试做什么的详细信息。
相关文章:
- 可视化 如何在 c++ 中制作特定大小的文件?
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 提升如何在图形可视化中写入边缘的权重?
- 如何在大型c++项目的可视化代码中设置调试
- 可视化编译与 C++ 中的 Extern 变量
- 可视化 Bazel C++预编译标头实现
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- C++合并排序可视化工具
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 可视化 将字符串解析为数组以进行C++
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 可视化C++载体:未使用的容量
- 可视化 如何在 c++ 中截断
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- OpenCV 中大量可视化::Widget3D 的性能不佳
- GCC、CLANG 和 MSVC 的可视化C++自动矢量化要求
- 所有Visual Studio安装程序崩溃,可视化构建工具也无法正常工作
- 可视化的c++变量赋值使代码正常工作
- 可视化C++工作区和编译器.你好世界测试初学者
- 在c++中使用大尺寸矢量的可视化工作