C ++向量访问器方法

时间:2012-12-08 17:56:20

标签: c++ vector

我正在玩Vector,试图更好地了解它们。 我创建(我认为)一个空向量:vector<string> contents; 我创建(我认为)一个访问方法:vector<string> getContents(); 该方法如下所示:

    vector<string> Album::getContents()
    {
        cout << "\nAlbum Contents:\n\n" << endl;
        for(vector<string>::iterator iter = contents.begin(); 
                                     iter !=contents.end(); iter++)
           {
               cout << *iter << endl;
           }
    }

这是一个合适的访问方法还是我在想什么?因为我的getContents不会返回任何内容,而是打印它...

假设这是一个有效的方法,那么返回向量集合内容的更好方法是什么?感谢。

编辑:我刚编译它,我的方法需要返回一些东西......所以现在我假设我的方法没有意义,你应该能够逐项返回矢量集合项目类似于使用for的Java数组-环?我不知道。

1 个答案:

答案 0 :(得分:3)

这几乎是合适的。但是你的方法需要返回一些东西。它被定义为返回向量的副本,因此它可以通过返回contents的副本来工作:

vector<string> Album::getContents()
{
    cout << "\nAlbum Contents:\n\n" << endl;
    for(vector<string>::iterator iter = contents.begin(); 
                                 iter !=contents.end(); iter++)
    {
           cout << *iter << endl;
    }
    return contents;  // return a copy of contents
}

您需要决定是否希望调用者获取该向量的副本,或者是否要允许他们获取引用。如果你想这样做,你的方法必须是

中的一个或两个
vector<string>& getCOntents();    // caller can get a read-write reference to contents
const vector<string>& getContents() const; // caller can get a read only reference to contents.

但要注意,提供对类的内部的引用可能很难管理。至少,您必须确保调用者所引用的Album对象至少与引用一样长。