如何声明一个包含类中所有元素的向量?例如:
class Book{
string name;
int published;
float price;
}
矢量是在类中还是仅在主函数中?将其声明为vector<Book *> a
;
你怎么能在这个载体中添加这些名字?如果您有多本书,您必须声明一个新的向量吗?
答案 0 :(得分:1)
我不确定你在问什么。如果你想要一个图书矢量,那么vector<Book>
就可以了。在这个时候,我建议不要使用指针,因为这会引入一些其他复杂性。向量中的每本书都包含您声明它们的元素。
向量是跟踪多本书的一种方式。如果您需要两个列表的书籍来跟踪(例如,一个向量是非小说类书籍列表,另一个是小说书籍列表),您只需要声明另一个向量。
声明向量的位置取决于您希望如何使用它。首先,您可能希望在main
中声明它以测试它是否有效。如果您以后想要创建Library
类,那么您很可能会在该类中声明vector<Book>
。
答案 1 :(得分:0)
矢量是在一个类中还是只在一个主函数中?
没有多大意义。 std :: vector是一个类容器,可以在其中包含多个元素(所有相同的类型)。
将其声明为
vector<Book *> a
请注意,这样就可以声明指向类的指针向量。
你怎么能在这个载体中添加这些名字?
您可以使用std::vector::push_back在向量的末尾插入元素。
如果您有多本书,您必须申报新书 矢量?
嗯,这正是使用像vector这样的容器的原因,它拥有多个元素。拥有更多的载体是没有意义的。
如何使用向量访问数据呢?就像你 想要改变特定书籍的价格
为了简单起见,您可以使用括号来访问给定索引处的向量元素。在C ++类中,默认情况下,成员是私有的,如果你没有明确地公开它们。因此,避免进一步的解释(参见getter / setter以获得最终更好的设计),方法可能如下:
class Book{
public:
string name;
int published;
float price;
Book (string iName, int iPublished, float iPrice)
{
name = iName;
published = iPublished;
price = iPrice;
}
}
std::vector<Book*> bookList = std::vector();
bookList.push_back(new Book("foo", 10, 100.0f));
bookList.push_back(new Book("bar", 11, 110.0f));
std::cout << bookList[1].name; // print bar