【问题标题】:Assigning a 2D double array using 1D array of strings, each referring to another 1D array of doubles使用一维字符串数组分配一个二维双精度数组,每个字符串都引用另一个一维双精度数组
【发布时间】:2014-09-21 23:27:12
【问题描述】:

我有 4 个大小为 3 的数组。在我的代码中,我生成了一些放入这些数组中的值。我想将它们保存在输出文件中。

这种实现最优雅和最佳的做法是什么?我使用双数组来存储它们,并使用 for 循环遍历二维数组并保存它们,但我不喜欢这种方法。

我喜欢将所有 arr1、arr2、arr3、arr4 放在一个字符串数组中,并循环遍历数组获取字符串,它指的是具有三个值的双精度数组。希望我没有弄得那么混乱。 这就是我所做的......

double arr1[3], arr2[3], arr3[3], arr4[3];

//Omitted code that generates content of arrays

double coordinates[4][3] = {{arr1[0], arr1[1], arr1[2]},
                            {arr2[0], arr2[1], arr2[2]},
                            {arr3[0], arr3[1], arr3[2]},
                            {arr4[0], arr4[1], arr4[2]}};

for(int i = 0; i<4; i++)
    {
        for(int j = 0; j<3; j++)
        {
        output << coordinates[i][j]; //writing ith character of array in the file
        if(j<2)
            output<<",";//separate coordinates by a comma
        else 
            output<<"\n";
    }
}

另外,在这种情况下,向量如何?我从来没有使用过它们,所以我对它们不太熟悉。 谢谢。

【问题讨论】:

  • 鞋码result1等的定义
  • 有一个错字。现在怎么样?
  • 创建一个接受数组指针和维度的打印函数?
  • 不是打印功能。这是我的输出文件,我只是没有在这里添加它的定义。

标签: c++ arrays vector


【解决方案1】:

std::array 是首选构造。你可以这样使用它:

#include <iostream>
#include <array>
int main()
{
    std::array<int, 3> arr1, arr2, arr3, arr4;
    std::array<std::array<int, 3>, 4> coordinates{{arr1, arr2, arr3, arr4}};
}

【讨论】:

  • 好的,但我正在使用 Xcode 并且没有那个标题。 Xcode 对 C++ 11 的支持并不多,你觉得呢?
  • @Salchem double coordinates[4][3] = {arr1, arr2, arr3, arr4}
  • 好的。这给了我一个错误:无法在初始化中将 'double*' 转换为 'double'
  • @Salchem 抱歉。您可以将数组转换为向量,并将 coordinate 对象转换为向量向量 -- coliru.stacked-crooked.com/view?id=146c9aaae8fc09ed 不幸的是,在 C++11 之前的编译器上没有更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多