C++创建具有动态大小的数组

标签 c++ arrays dynamic

如何创建一个像这样具有动态大小的数组:

int sentLen = sentences.size();

double a[sentLen][sentLen];

for (int i = 0; i < sentLen; i++) 
{
    for (int j = 0; j < sentLen; j++)
    {
        a[i][j] = somefunction(i, j);
    }
}

我的研究使我使用了不推荐的 malloc 或其他过于复杂的方法。在我意识到大小必须是常量之后,我尝试使用 unordered_map,并且尝试了以下操作:

std::unordered_map <int, int, double> a;


for (int i = 0; i < sentLen; i++) 
{
    for (int j = 0; j < sentLen; j++)
    {
        a.insert({ i, j, somefunc(i, j) });
    }
}

还是没有成功。

最佳答案

你真的不想使用数组。

std::vector<std::vector<double>> a{
   sentLen, std::vector<double>{ sentLen, 0.0 } };

for (int i = 0; i < sentLen; ++i)
{
    for (int j = 0; j < sentLen; ++j)
    {
        a[i][j] = somefunc(i, j);
    }
}

关于C++创建具有动态大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318747/

相关文章:

reactjs - 在React中,尝试根据传递给url的ID显示不同的图像

java - 动态添加内容到java swing jpanel

c++ - 如何实现创建递归 lambda 并返回它的方法

c++ - 点相对于平面的OpenCv Blob跟踪

PHP 在多维数组中查找值并获取对应的元素值

php - 在 foreach 循环中为二维数组赋值

c++ - 为什么 sys socket recv 函数不填充数据而是返回字节长度?

python - 将 cv2 形状从 python 转换为 c++

c++ - 从二进制读取二维 float 组,从 char* 转换为 float[2]

c# - 如何动态创建 C# 面板