如何声明一个包含类中所有元素的向量?例如:
class Book{
string name;
int published;
float price;
}
向量是在一个类中还是在一个主函数中?将其声明为vector<Book *> a
; 然后你怎么能在这个向量中添加这些名字?如果你有不止一本书,你必须声明一个新的向量怎么办?
我不确定你在问什么。如果您想要书籍的矢量,那么vector<Book>
就可以了。目前,我建议不要使用指针,因为这会带来一些其他的复杂性。向量中的每本书都包含自己声明的元素。
向量是跟踪不止一本书的一种方式。如果您需要跟踪两个书籍列表(例如,一个向量是非小说书籍列表,另一个是小说书籍列表),则只需声明另一个向量。
声明向量的位置取决于您要如何使用它。首先,您可能想要声明它main
以测试它是否有效。如果您以后想创建一个Library
类,那么您很可能会vector<Book>
在该类中声明。
向量是在一个类中还是在一个主函数中?
这没有多大意义。std::vector 是一个类容器,可以在其中包含多个元素(所有相同类型)。
将其声明为
vector<Book *> a
请注意,这种方式是在声明一个指向类的指针向量。
然后你怎么能在这个向量中添加这些名字?
您可以使用std::vector::push_back在向量末尾插入元素。
如果你有不止一本书,你必须声明一个新的向量怎么办?
嗯,这正是使用像矢量这样的容器来容纳多个元素的原因。拥有更多向量没有意义。
那么如何使用向量访问数据呢?比如如果你想改变特定书籍的价格怎么办
为了简单起见,您可以使用方括号来访问给定索引处的向量元素。在 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