2 Stimmen

Das Einrichten eines Vektors in C++

Ich versuche, einen Vektor einzurichten, um eine Gruppe von Baseball-Werfern zu speichern. Ich möchte den Namen eines Werfers, Joe Smith (string), und seinen erzielten Durchschnitt der letzten beiden Jahre - 2,44 und 3,68, speichern. Ich möchte auch den Namen eines zweiten Werfers - Bob Jones (string) - und seinen erzielten Durchschnitt von 5,22 und 4,78 speichern. Dies ist Teil einer größeren Hausaufgabe, aber ich habe gerade erst angefangen, Vektoren zu verwenden. Das Problem, das ich habe, ist, dass mein Lehrbuch sagt, dass Vektoren nur verwendet werden können, um Werte desselben Typs zu speichern, und alle Beispiele, die ich finde, verwenden hauptsächlich Integer-Werte. Zum Beispiel habe ich dieses Beispiel auf cplusplus.com gefunden

// Vektoren erstellen
#include 
#include 

int main ()
{
unsigned int i;

// Verwendete Konstruktoren in der gleichen Reihenfolge wie oben beschrieben:
std::vector first;                                // leerer Vektor von ints
std::vector second (4,100);                       // vier ints mit dem Wert 100
std::vector third (second.begin(),second.end());  // Iteration durch second
std::vector fourth (third);                       // eine Kopie von third

// Der Iterator-Konstruktor kann auch verwendet werden, um aus Arrays zu konstruieren:
int myints[] = {16,2,77,29};
std::vector fifth (myints, myints + sizeof(myints) / sizeof(int) );

std::cout << "Der Inhalt von fifth lautet:";
for (std::vector::iterator it = fifth.begin(); it != fifth.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';

return 0;
}

Gibt es einen Weg, diesen Code so zu ändern, dass er einen String und zwei Doubles akzeptiert? Ich muss keine Eingabe vom Benutzer erhalten, ich muss nur die beiden Werfer in int main() initialisieren. Ich habe bereits eine Klasse für sie eingerichtet, wie unten gezeigt, aber die Aufgabe erfordert einen Vektor.

#ifndef PITCHER_H
#define PITCHER_H
#include 

using namespace std;

class Pitcher
{
private:
    string _name;
    double _ERA1;
    double _ERA2;

public:
    Pitcher();
    Pitcher(string, double, double);
    ~Pitcher();
    void SetName(string);
    void SetERA1(double);
    void SetERA2(double);
    string GetName();
    double GetERA1();
    double GetERA2();       

};

#endif

#include "Pitcher.h"
#include 
#include 
#include 
#include 
using namespace std;

Pitcher::Pitcher()
{
}

Pitcher::Pitcher(string name, double ERA1, double ERA2)
{
_name = name;
_ERA1 = ERA1;
_ERA2 = ERA2;
}

Pitcher::~Pitcher()
{
}

void Pitcher::SetName(string name)
{
_name = name;
}

void Pitcher::SetERA1(double ERA1)
{
_ERA1 = ERA1;
}

void Pitcher::SetERA2(double ERA2)
{
_ERA2 = ERA2;
}

string Pitcher::GetName()
{
return _name;
}

double Pitcher::GetERA1()
{ 
return _ERA1;
}

double Pitcher::GetERA2()
{
return _ERA2;
}

#include 
#include 
#include 
#include 
#include "Pitcher.h"

using namespace std;

int main()
{

Pitcher Pitcher1("Joe Smith", 2.44, 3.68);

cout << Pitcher1.GetName() << endl;
cout << Pitcher1.GetERA1() << endl;
cout << Pitcher1.GetERA2() << endl;

system("PAUSE");
return 0;
}

5voto

Armen Tsirunyan Punkte 125469

Ich denke, du möchtest einen Vektor von Pitchern speichern.

 vector pitchers;
 Pitcher p1("name", 0.5, 0.1); // einen Pitcher erstellen
 pitchers.push_back(p1); // den Pitcher zum Vektor hinzufügen
 ...// einige andere Pitcher ausfüllen
 // um alle Pitcher auszudrucken
 for(unsigned i = 0; i < pitchers.size(); ++i)
 {
      cout << pitchers[i].GetName() << " " << pitchers[i].GetERA1() << "\n";
 }

Hoffentlich klärt das Beispiel einige Dinge auf.

0voto

Lefsler Punkte 1718

Möchtest du etwas wie

vector *vecPit=new vector();

hinzufügen mit

vecPit->push_back(new Pitcher("string", 2.123, 2.123)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X