我正在研究 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/