基本上我在std::vector<std::string> alloc
中有一个私有class A
,它通过公共方法std::vector<std::string> allocMethod()
对其进行了一些操作等,然后这个方法执行return alloc
。该方法在class B
在class B
中,我想打印allocMethod
的返回值,即alloc
向量。这就是我所拥有的
std::cout << A.allocMethod();
我知道通常会使用某种interator和loop来打印出一个向量,但我不认为我可以这样做,因为它是一个函数返回值,而不是实际上是一个向量。
注意:我真的不想在class A
中打印出矢量。
有没有办法输出如上所示的std::vector<string>
结果?
答案 0 :(得分:2)
与你的相信相反,你可以通过迭代来打印向量,尽管它是一个临时的使用C ++ 11 for-loop,如下所示:
for (const auto& i : A.allocMethod())
std::cout << i << '\n';
答案 1 :(得分:2)
“注意:我真的不想在A级打印出矢量。”
如果你想反复使用它,为std::vector<std::string>
提供适当的输出操作符重载可能是值得的
std::ostream& operator<<(std::ostream& os,const std::vector<std::string>>& vs) {
for (const auto& s : vs) {
os << s << " ";
}
return os;
}
这应该只允许调用
std::cout << A.allocMethod();
您甚至可以尝试更通用的重载
template<typename T>
std::ostream& operator<<(std::ostream& os,const std::vector<T>>& vs) {
for (const auto& s : vs) {
os << s << " ";
}
return os;
}
答案 2 :(得分:0)
您可以存储返回值,然后迭代它。像这样:
std::vector<std::string> result = allocMethod();
for (std::size_t i = 0; i < result.size(); ++i)
{
std::cout << result[i];
}