从本质上说,我在class A中有一个私有的class A,它有一些操作等,通过公共方法std::vector<std::string> allocMethod()完成,然后这个方法执行return alloc。在class B中调用该方法
在class B中,我要打印allocMethod的返回值,即alloc向量。这就是我所拥有的
std::cout << A.allocMethod();我知道,通常情况下,人们会使用某种中介和循环来打印一个向量,但我认为我不能这样做,因为它是一个函数,返回值正在打印,而不是实际的向量。
注意:我实际上不需要只打印出class A中的向量。
是否有一种方式输出std::vector<string>的结果,如上面所示?
发布于 2014-10-19 16:36:54
“注意:我其实不想只打印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;
}发布于 2014-10-19 16:33:41
与您的想法相反,您可以通过迭代来打印向量,尽管它是使用C++11 for-循环的临时方法,如下所示:
for (const auto& i : A.allocMethod())
std::cout << i << '\n';发布于 2014-10-19 16:33:35
您只需存储返回值,然后对其进行迭代。如下所示:
std::vector<std::string> result = allocMethod();
for (std::size_t i = 0; i < result.size(); ++i)
{
std::cout << result[i];
}https://stackoverflow.com/questions/26452699
复制相似问题