如何调用数组的成员

How to call member of the Array?

本文关键字:数组 成员 调用 何调用      更新时间:2023-10-16

我正在尝试为数组制作一个函数,以打印3列3行的二维数组。我不知道的是如何让程序从用户那里获得输入,并将其转换为这部分的功能:

array<array<int, columns>,rows>c[item];
cout<<"2-D Array print: "<<endl;

我一直在想办法,但我似乎哪儿也不去:(。求你了,我需要帮助。

#include <iostream>
#include <array>
#include <iomanip>
using namespace std;
const size_t rows=3;
const size_t columns=3;
void printArray(const array<array<int, columns>,rows>&);
int main(){
    const size_t arraysize=9;
    array<int, arraysize>c;
    cout<<"Enter an array of 9 floats: "<<endl;
    for (size_t i=0;i<c.size(); i++) {
        cin>>c[i];
    }
    cout<<endl;
    cout<<"Normal array print: ";
    for (int item :c) {
        cout<<item<<" ";
    }
    array<array<int, columns>,rows>c[item];
    cout<<"2-D Array print: "<<endl;
}
void printArray(const array<array<int, columns>,rows>&a){
    for(auto const &row:a)
    {
        for(auto const &element:row)
            cout<<element<<" ";
            cout<<endl;
    }
}

(由于您已经在打印点有了数据,我将问题解释为:我不知道如何转换数组以将其传递给函数)

除了std::array是一个连续的内存存储,并且您可能会使用如下的uberack(不能保证工作):

printArray(reinterpret_cast<const array<array<int, columns>, rows>&>(c));

如果你使用一个保证数据一致性的转换循环,我会觉得安全多了:

array<array<int, columns>, rows> printArr;
for (int x = 0; x < rows; ++x) {
    for (int y = 0; y < columns; ++y) {
        printArr[x][y] = c[x*columns + y];
    }
}
printArray(printArr);

输出:

Enter an array of 9 integers: 
Normal array print: 1 2 3 4 5 6 7 8 9 2-D Array print: 
1 2 3 
4 5 6 
7 8 9 

实例