我尝试用20000点计算一个问题,所以有一个20000*20000个元素的距离矩阵,如何在C++中存储这个矩阵?我在具有4 GB RAM的计算机上使用Visual Studio 2008.任何建议将不胜感激.
避免使用您正在考虑的强力方法,并尝试设想一个涉及填充单个20000元素列表的解决方案,而不是涵盖所有可能排列的数组.
对于初学者,考虑到您的问题的具体情况,请考虑以下简单的方法,您可以改进这些方法:
int bestResult = -1;  // some invalid value
int bestInner;
int bestOuter;
for ( int outer = 0; outer < MAX; outer++ )
{
    for ( int inner = 0; inner < MAX; inner++ )
    {
        int candidateResult = SomeFunction( list[ inner ], list[ outer ] );
        if ( candidateResult > bestResult )
        {
            bestResult = candidateResult;
            bestInner = inner;
            bestOuter = outer;
        }
    }
}
您可以将矩阵表示为单个大型数组.这样做是否是个好主意是由你决定的.
如果每个单元需要四个字节,则矩阵仅为4*20000*20000,即1.6GB.任何平台都应该为单个进程提供大量内存.Windows默认为32位进程提供2GiB - 如果需要更多,您可以使用链接器选项.我试过的所有32位unices都给你超过2.5GiB.