在std :: array中迭代记录

时间:2017-12-15 12:18:37

标签: c++11 for-loop stdmap stdarray

我正在创建一个2D std :: array,并希望按记录(而不是索引)迭代2D std :: array记录

    std::array<std::array<int, 2>, 6> m_setSockarr;
    m_setSockarr = {{{0,1},{1,2},{2,3},{4,5},
                        {5,6},{6,7}}};
    for(auto i=m_setSockarr.begin();i !=m_setSockarr.end();i++)
    {
            //code here to print record wise.
    }

我想以记录方式打印值,而不是索引方式(不使用其他循环,最后打印m_setScokarr [i] [j])。

在std :: Map中我们可以使用它 - &gt;首先使用它 - >&gt;秒来按记录打印记录(Map是关联容器)

尝试以不同的方式打印,例如新的索引增量等。但没有进展。

我希望输出就像在一个for循环

中使用std :: array的迭代器一样
0,1
1,2
2,3
4,5
5,6
6,7

想知道我们是否可以使用std :: array(序列容器)来打印记录,类似于我们用于std :: map。

1 个答案:

答案 0 :(得分:1)

在C ++ 11中:

for (const auto& record : m_setSockarr)
{
    std::cout << record[0] << ", " << record[1] << '\n';
}

在C ++ 17中:

for (const auto& [k, v] : m_setSockarr)
{
    std::cout << k << ", " << v << '\n';
}