C++ 在C+中设置向量+;

C++ 在C+中设置向量+;,c++,class,vector,C++,Class,Vector,我正在尝试设置一个向量来存储一组棒球投手。我想储存一个投手的名字乔·史密斯(弦)和他过去两年的平均得分——2.44分和3.68分。我还想储存第二个投手的名字-鲍勃·琼斯(弦)和他的平均得分5.22和4.78。这是一个更大的家庭作业的一部分,但我才刚刚开始使用向量。我遇到的问题是,我的教科书上说,向量只能用于存储相同类型的值,我发现的所有示例主要使用整数值。例如,我在cplusplus.com上找到了这个示例 // constructing vectors #include <iostrea

我正在尝试设置一个向量来存储一组棒球投手。我想储存一个投手的名字乔·史密斯(弦)和他过去两年的平均得分——2.44分和3.68分。我还想储存第二个投手的名字-鲍勃·琼斯(弦)和他的平均得分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;
}
//构造向量
#包括
#包括
int main()
{
无符号整数i;
//按上述相同顺序使用的构造函数:
std::vector first;//整数的空向量
std::vector second(4100);//值为100的四个整数
std::vector third(second.begin(),second.end());//遍历second
向量第四(三);//第三的副本
//迭代器构造函数也可用于从数组构造:
int myints[]={16,2,77,29};
向量第五(myints,myints+sizeof(myints)/sizeof(int));

std::cout我想你应该存储一个投手向量

 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";
 }
矢量投手;
投手p1(“名称”,0.5,0.1);//创建投手
pitchers.push_back(p1);//将投手添加到向量
…//补上一些其他的投手
//打印所有投手
for(无符号i=0;i你想要像这样的东西吗

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

这种方法比我的好,你不使用指针,只是要记住,如果你想在作用域结束后保持这种状态,你需要一个指针。@demonofnight这些Pitcher对象将被复制到向量中,因此它们的作用域将与向量的作用域相同。例如,如果向量被返回,它将包含有效的Pitcher对象。@Porkbutts更切中要害的是:根据
Pitcher
的定义,您可能永远不会有指向它的指针。您可以使用
[]
(或迭代器,或
back()
front()
)在向量中访问它。如果你想在本地保存它,你可以复制一份。我没有使用指针,你是对的,我只需要一个投手向量,这是一个巨大的帮助。如果你想要这种类型的东西-使用智能的,而不是原始的指针。例如
vecPit;
add with
vecPit。推回(使你共享(“字符串”,1,2))你不必担心删除包含的对象。你推后回来的时候你会如何访问新投手?只是好奇,因为我在学校里学习C++。我已经读完了3天的书,在课堂上读完了这本书,试图沉浸在所有的事情中。我只记得向量是好的BEC。因为它们没有固定的尺寸@demonofnight@gbjbaanb更具体地说,你不需要这种事情。智能指针是一种工作,但是任何一种指针都是设计错误。写的C++尽可能使用值语义。@查尔斯达迪斯VCPIT -> AT(POS)> StNeNT(“ASDASD”);你有VCPIT -> siz()。或者,您可以与James一起使用iteratorAgree。由于向量由数组支持,因此您可以获得空间局部性的额外好处。使用pitcher对象而不是指向pitcher的指针。指向向量的指针很好,不过我更希望通过成员变量保留对实际向量的引用。
vector<Pitcher*> *vecPit=new vector<Pitcher*>();
vecPit->push_back(new Pitcher("string", 2.123, 2.123)