C++ vector 访问器方法

标签 c++ vector

我正在研究 Vectors,试图加深对它们的了解。 我创建了(我认为)一个空 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不返回任何东西,而是打印它......

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

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

最佳答案

差不多就可以了。但是你的方法需要返回一些东西。它被定义为返回一个 vector 的拷贝,因此它可以通过返回 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 的拷贝,还是希望他们获得对它的引用。如果你想这样做,你的方法必须是其中之一或两者

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 对象至少与引用一样长。

关于C++ vector 访问器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780204/

相关文章:

c++ - enable_shared_from_this 和堆栈上的对象

c++ - Boost.Spirit X3 解析器 "no type named type in(...)"

c++ - 将 ObjC/C++ 中的字节数组编码到 IOS 中的 C# 时出现问题

用模式替换 R 中的字符串并替换两个向量

c++ - vector 的 std::copy 无法正常工作

c++ - for循环中的共享指针 vector getter导致问题

用于 VS2005 的 C++ std::tr2

c++ - 用 C++ 编写扑克手数计算器

r - 1 :5 and c(1, 2,3,4,5) 和有什么区别?

c++ - 试图反射(reflect)对原始变量更改的影响(通过引用调用)