2

野球のピッチャーのグループを格納するベクトルを設定しようとしています。Joe Smith (string) という 1 人の投手の名前と、過去 2 年間の防御率 (2.44 と 3.68) を保存したいと考えています。また、2 番目の投手の名前、Bob Jones (string) と彼の防御率 5.22 と 4.78 も保存したいと思います。これは大きな宿題の一部ですが、ベクトルを使い始めたばかりです。私が抱えている問題は、教科書には、ベクトルは同じ型の値を格納するためにのみ使用でき、私が見つけたすべての例は主に整数値を使用していると書かれていることです。たとえば、cplusplus.com でこの例を見つけました

// constructing vectors
#include <iostream>
#include <vector>

int main ()
{
unsigned int i;

// constructors used in the same order as described above:
std::vector<int> first;                                // empty vector of ints
std::vector<int> second (4,100);                       // four ints with value 100
std::vector<int> third (second.begin(),second.end());  // iterating through second
std::vector<int> fourth (third);                       // a copy of third

// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

std::cout << "The contents of fifth are:";
for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';

return 0;
}

文字列と 2 つの double を受け入れるようにこのコードを変更する方法はありますか? ユーザーから入力を取得する必要はありません。int main() で 2 つのピッチャーを初期化するだけで済みます。以下に示すように、既にクラスを設定していますが、割り当てにはベクトルが必要です。

#ifndef PITCHER_H
#define PITCHER_H
#include <string>

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 <iostream>
#include <string>
#include <vector>
#include <iomanip>
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 <iostream>
#include <string>
#include <vector>
#include <iomanip>
#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;
}
4

2 に答える 2

5

ピッチャーのベクトルを保存したいと思います

 vector<Pitcher> pitchers;
 Pitcher p1("name", 0.5, 0.1); //create a pitcher
 pitchers.push_back(p1); //add the pitcher to the vector
 ...//fill in some other pitchers
 //to print all the pitchers
 for(unsigned i = 0; i < pitchers.size(); ++i)
 {
      cout << pitchers[i].GetName() << " " << pitchers[i].GetERA1() << "\n";
 }

この例でいくつかの問題が解決されることを願っています。

于 2013-04-24T17:33:12.040 に答える
0

次のようなものが欲しいですか

vector<Pitcher*> *vecPit=new vector<Pitcher*>();

で追加します

vecPit->push_back(new Pitcher("string", 2.123, 2.123)
于 2013-04-24T17:33:26.837 に答える