[英]C++ print contents of array of string vectors?
我不懂C ++,但需要对我继承的一些代码做一些调整。 代码的一部分有:
array<vector<string>, 2> names;
我现在正在尝试打印此数组中每个向量的内容。 我该怎么做呢?
我知道我可以像这样迭代一个向量:
for (unsigned int p=0; p<vector.size(); p++)
cout << vector.at(p) << endl;
我无法弄清楚如何调整它来打印数组中每个向量的内容。
感谢您提供任何帮助。 我不在这里。
在C ++ 11中,您可以非常轻松地迭代它。
for(auto& i : names) {
for(auto& k : i) {
std::cout << k << std::endl;
}
}
就像迭代向量一样,你需要遍历数组:
for (int i=0; i<2; i++)
{
for (unsigned int p=0; p<names[i].size(); p++)
{
cout << names[i].at(p) << endl;
}
}
要么
for (auto it = std::begin(names); it != std::end(names); ++it)
{
for (unsigned int p=0; p<(*it).size(); p++)
{
cout << (*it).at(p) << endl;
}
}
使用迭代器:
array<vector<string>,2> names;
for (array<vector<string>,2>::iterator i=names.begin();i!=names.end();i++)
{
for (vector<string>::iterator j=i->begin();j!=i->end();j++)
{
cout << *j << endl;
}
}
一号线的解决方案(在这种情况下,并不一定可取,因为与手动迭代for
在Rapptz的回答是更容易阅读,但还是很高兴知道):
std::for_each(names.begin(), names.end(), [](vector<string>& v){
std::copy(v.begin(),v.end(),
std::ostream_iterator<string>(std::cout,"\n")});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.