繁体   English   中英

如何在构造函数 c++ 中初始化数组

[英]How to initialize an array in a constructor c++

我需要有关此代码的帮助。 我想要的是制作一个参数构造函数并在其中初始化/设置数组的值。

问题:用整数的 arrays 创建一个 class 并在构造函数中初始化它。 然后使用函数找到最小和最大的数字。

但是我被困在如何在构造函数中初始化数组。 我想以两种方式输入数据

(1) 按用户,使用 cin

(2) 通过给出自己的价值观

class Numbers
 {
     int Arr[3];
 public:
    Numbers() //default constructor
    {
        for (int i=0 ; i<=2 ; i++)
        {
            Arr[i]=0;
        }
    }
    Numbers(int arr[])  //parameteric constructor
    {
        for (int i=0;i<=2;i++)
        {
            Arr[i]=arr[i];
        }
    }
 };


int main()
{
    int aro[3] = {0,10,5};
    Numbers obj (aro);
    return ;
}

我建议使用std::vector<int>std::array<int> 如果您想使用自定义值进行初始化,您可以执行std::vector<int> m_vec {0, 1, 2};

解决方案非常简单。 我从头开始制作了一个新程序(为了理解起见)。 根据您的要求,您希望动态地从用户那里获取数组元素的输入并将它们分配给构造函数并使用一种方法来打印最高值。

考虑以下代码:

#include <iostream>

using namespace std;
const int N = 100;

class Numbers
{
    int largest = 0;

public:
    Numbers(int, int[]);
    void showHighest(void)
    {
        cout << largest << endl;
    }
};

Numbers::Numbers(int size, int arr[])
{
    for (int i = 0; i < size; i++)
    {
        if (arr[i] > largest)
        {
            largest = arr[i];
        }
    }
}

int main(void)
{
    int arrays[N], total;

    cout << "How many elements? (starts from zero) ";
    cin >> total;

    for (int i = 0; i < total; i++)
    {
        cout << "Element " << i << ": ";
        cin >> arrays[i];
    }

    Numbers n(total, arrays);
    n.showHighest();

    return 0;
}

Output

How many elements? (starts from zero) 3
Element 0: 12
Element 1: 16
Element 2: 11
16

注意:我已经初始化了一个恒定数量的最大元素,你可以修改它。 不需要向量等来实现这一点。 您可以通过删除total及其后面的语句来使用自己的值,而只使用int arrays[<num>] = {...}代替。 你完成了!

享受编码!

非常感谢你的帮助。 我基本上对如何在构造函数中使用 arrays 并在 class 中为 arrays 使用 setter/getter 感到困惑。 但是你们都帮了很多忙。 再次感谢。

    Numbers(int arr[])
    {
        for (int i=0;i<=9;i++)
        {
            Arr[i]=arr[i];              
        }
        Largest=Arr[0];
        Smallest=Arr[0];
    }
    void Largest_Number()
    {
        header_top("Largest Number");
        Largest=Arr[0];                   //Using this so we make largest value as index zero
        for (int i=0 ; i<=9 ; i++)
        {
            if(Arr[i]>Largest)
            {
                setLargest( Arr[i] );
            }
        }
        cout<<"Largest Number: "<<getLargest()<<endl;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM