我有以下包含树形字符串元素的向量vector,我想知道如何遍历col元素而不是对行进行普通循环
vector<vector<string>> vec2Dstr =
{
{ "A2", "A4", "A6" },
{ "B2", "B4", "B6" },
{ "C2", "C4", "C6" },
{ "D2", "D4", "D6" },
{ "E2", "E4", "E6" }
};
预期输出为:
A2 B2 C2 D2 E2
A4 B4 C4 D4 E4
A6 B6 C6 D6 E6
代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<vector<string>> vec2Dstr =
{
{ "A2", "A4", "A6" },
{ "B2", "B4", "B6" },
{ "C2", "C4", "C6" },
{ "D2", "D4", "D6" },
{ "E2", "E4", "E6" }
};
for(auto & j : vec2Dstr ) {
for(int i = 0 ; i < 3; i++ )
cout << " => " <<j.at(i) << endl;
}
return 0;
}
答案 0 :(得分:2)
以下代码可以达到预期的目的!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<vector<string>> vec2Dstr =
{
{ "A2", "A4", "A6" },
{ "B2", "B4", "B6" },
{ "C2", "C4", "C6" },
{ "D2", "D4", "D6" },
{ "E2", "E4", "E6" }
};
size_t total_col = vec2Dstr[0].size();
for (int col=0; col<total_col; ++col)
{
for(auto& row : vec2Dstr)
{
cout << row[col] << " ";
}
cout << endl;
}
return 0;
}
答案 1 :(得分:1)
您的for
循环是错误的。硬编码限制5
时,如何期望它显示3
元素。使用以下逻辑重写for
循环:
vec2Dstr
从0
迭代到length
。vec2Dstr[i][j]
,其中j
在上述每个循环之后都会增加。如果在此之后您仍然被卡住,请告诉我。先给我看一些代码。