结构的C ++动态字段(for循环)

时间:2016-01-12 14:13:36

标签: c++ for-loop struct

我试图在C ++中使用struct来拥有2个部分,computer1和computer2。使用for循环,首先运行computer1,然后运行computer2。如何将其与for循环结合使用?

#include "stdafx.h"
#include<iostream>
using namespace std;

struct computer {
  int ram;
  int usb;
  int hdd;
};
int main()
{
computer["computer1"]=0;
computer["computer2"]=1;
for (int i = 0; i <= 1; i++ ){ 
    cout<<"How much RAM?";
    cin>>computer(i).ram;
    cout<<"How much USB ports?";
    cin>>computer1.usb;
    cout<<"How much HDD?"
    cin>>computer1.hdd;
}
}

2 个答案:

答案 0 :(得分:1)

首先,如果您在C ++中进行编程,那么您很可能希望为数据结构而不是结构使用类。在C ++中,编译器将结构视为一个类,除非默认情况下其所有成员都是公共的。它们在C ++中有用,但很有可能,你可能应该使用一个类来定义计算机&#39;

以下内容相当于您声明的内容。

class Computer
{
public:
      int ram;
      int usb;
      int hdd;
};

注意: 在实践中,您通常会将您的成员变量声明为私有,并提供公共访问者/修饰符(即getter / setter)。< / em>

其次,你需要决定什么类型的容器&#39;您的计划需求 - 例如数组,集合。问问自己,你是否只有两个实例,或者你是否需要应对许多实例?

看起来你试图声明一个数组,这对于开始是好的。在实践中,您可能希望使用STL中的容器(例如本例中的向量),这里您的选择会影响您编写循环的方式,但让我们保持简单。

以下是您如何声明一个足够大的数组来容纳2个条目(并填充它):

// declare an array - 2 elements long
Computer computers[2];

// create an instance and insert into the array
Computer comp1;
computers[0] = comp1; 

// create another instance and insert that into the array
Computer comp2; 
computers[1] = comp2;

现在,您可以使用循环逻辑迭代数组。

for (int i = 0; i <= 1; i++ ) {

    cout << "How much RAM?";
    cin >> computers[i].ram;
    cout << "How much USB ports?";
    cin >> computers[i].usb;
    cout << "How much HDD?";
    cin >> computers[i].hdd;
}

注意使用方括号来访问数组。

答案 1 :(得分:0)

制作一个数组(或者更好地了解向量)并循环两次。

computer arr[2]; // Array of 2 computers

for(int i = 0; i < 2; i++)
{
    cout<<"How much RAM?";
    cin>> arr[i].ram;
    cout<<"How much USB ports?";
    cin>>arr[i].usb;
    cout<<"How much HDD?"
    cin>>arr[i].hdd; 
}