-3

如何声明一个包含类中所有元素的向量?例如:

class Book{
    string name;
    int published;
    float price;
}

向量是在一个类中还是在一个主函数中?将其声明为vector<Book *> a; 然后你怎么能在这个向量中添加这些名字?如果你有不止一本书,你必须声明一个新的向量怎么办?

4

2 回答 2

1

我不确定你在问什么。如果您想要书籍的矢量,那么vector<Book>就可以了。目前,我建议不要使用指针,因为这会带来一些其他的复杂性。向量中的每本书都包含自己声明的元素。

向量是跟踪不止一本书的一种方式。如果您需要跟踪两个书籍列表(例如,一个向量是非小说书籍列表,另一个是小说书籍列表),则只需声明另一个向量。

声明向量的位置取决于您要如何使用它。首先,您可能想要声明它main以测试它是否有效。如果您以后想创建一个Library类,那么您很可能会vector<Book>在该类中声明。

于 2012-10-31T21:22:24.673 回答
0

向量是在一个类中还是在一个主函数中?

这没有多大意义。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
于 2012-10-31T21:29:35.037 回答