如何在2D矢量C ++中对col进行迭代?

时间:2018-07-11 18:29:53

标签: c++

我有以下包含树形字符串元素的向量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;
}

2 个答案:

答案 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循环:

  1. vec2Dstr0迭代到length
  2. 显示vec2Dstr[i][j],其中j在上述每个循环之后都会增加。

如果在此之后您仍然被卡住,请告诉我。先给我看一些代码。