我正在玩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数组-环?我不知道。
答案 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
对象至少与引用一样长。