我试图在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;
}
}
答案 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;
}