C++中的数组是否有最大长度?
它是C++限制还是取决于我的机器?它可以调整吗?它取决于数组的类型吗?
我可以以某种方式突破该限制,还是必须寻找更好的信息存储方式?什么应该是最简单的方法?
我要做的是在数组上存储long long int,我在Linux环境中工作.我的问题是:如果我需要存储N> 10位数的N长整数数组,我该怎么办?
我需要这个,因为我正在为学校编写一些加密算法(例如p-Pollard),然后点击这个整数墙和数组表示的长度.
在一个项目中,有人推动了这一行:
double (*e)[n+1] = malloc((n+1) * sizeof(*e));
Run Code Online (Sandbox Code Playgroud)
据推测,这会创建一个(n + 1)*(n + 1)双倍的二维数组.
据说,我说,因为到目前为止,我没有人问我能告诉我它的作用,确切地说,它起源于何处或为什么它应该起作用(据称,它确实如此,但我还没有购买它).
也许我错过了一些明显的东西,但如果有人能够向我解释上述内容,我会很感激.因为就个人而言,如果我们使用我们真正理解的东西,我会感觉好多了.
这个网站上的第一个计时器,所以这里..
我是C++的新手,我目前正在阅读"DS Malik的数据结构使用C++第二版"一书.
在书中,Malik提供了两种创建动态二维数组的方法.在第一种方法中,将变量声明为指针数组,其中每个指针都是整数类型.恩.
int *board[4];
Run Code Online (Sandbox Code Playgroud)
..然后使用for循环创建'列',同时使用指针数组作为'行'.
第二种方法,您使用指针指针.
int **board;
board = new int* [10];
Run Code Online (Sandbox Code Playgroud)
等等
我的问题是:哪种方法更好?**方法对我来说更容易可视化,但第一种方法可以大致相同的方式使用.两种方式都可用于制作动态二维数组.
编辑:上面的帖子不够清楚.这是我尝试过的一些代码:
int row, col;
cout << "Enter row size:";
cin >> row;
cout << "\ncol:";
cin >> col;
int *p_board[row];
for (int i=0; i < row; i++)
p_board[i] = new int[col];
for (int i=0; i < row; i++)
{
for (int j=0; j < col; j++)
{
p_board[i][j] = j;
cout << p_board[i][j] << " ";
}
cout << endl;
}
cout << …Run Code Online (Sandbox Code Playgroud) 我想创建类库,一个函数,其参数是一个未知大小的矩阵,用户将创建自己的矩阵并使用自己的大小并将其传递给此函数,对其矩阵进行一些操作,如下所示,将是功能
calculateDeterminantOfTheMatrix( int matrix[][])
{
some Operations to do on matrix
}
Run Code Online (Sandbox Code Playgroud) 我正在使用HDF5 C++ API编写2D数组数据集文件.HDF小组有一个例子来创建一个静态定义的数组大小的HDF5文件,我已经修改过以满足下面的需求.然而,我需要动态阵列,其中两个NX和NY在运行时确定.我找到了另一种使用"new"关键字创建2D数组的解决方案,以帮助创建动态数组.这是我有的:
#include "StdAfx.h"
#include "H5Cpp.h"
using namespace H5;
const H5std_string FILE_NAME("C:\\SDS.h5");
const H5std_string DATASET_NAME("FloatArray");
const int NX = 5; // dataset dimensions
const int NY = 6;
int main (void)
{
// Create a 2D array using "new" method
double **data = new double*[NX];
for (int j = 0; j < NX; j++) // 0 1 2 3 4 5
{ // 1 2 3 4 5 6 …Run Code Online (Sandbox Code Playgroud) 我想创建一个在C++中返回连续2D数组的函数.
使用以下命令创建阵列不是问题:
int (*v)[cols] = new (int[rows][cols]);
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何将此数组作为函数的常规类型返回.功能是:
NOT_SURE_WHAT_TYPE create_array(int rows, int cols)
{
int (*v)[cols] = new (int[rows][cols]);
return v;
}
Run Code Online (Sandbox Code Playgroud)
我尝试了双*[]和双**,两者都不起作用.我不想使用double*,因为我想从外部访问这个数组作为2D数组.
相关问题:如何使用new在C++中声明二维数组?
在Visual Studio 2010中,此初始化按预期工作:
char table[2][2] = {
{'a', 'b'},
{'c', 'd'}
};
Run Code Online (Sandbox Code Playgroud)
但是写下这样的东西似乎不合法:
char table[][] = {
{'a', 'b'},
{'c', 'd'}
};
Run Code Online (Sandbox Code Playgroud)
Visual Studio抱怨此数组可能不包含'that'类型的元素,并且在编译之后,VS报告两个错误:缺少索引和太多初始化.
问题:为什么在初始化多维数组时我不能完全省略维度?
我想知道我们何时在C++中使用Pointer指针以及为什么我们需要指向指针?我知道当我们指向一个指针时,这意味着我们将变量的内存地址保存到内存中,但我不知道为什么需要它?另外我看到一些例子总是在创建矩阵时使用指针到指针!但为什么Matrix可能需要Pointer指针?