迭代 std::array 中的记录

San*_*ahu 2 for-loop stdmap c++11 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.
    }
Run Code Online (Sandbox Code Playgroud)

我想以记录方式打印值,而不是以索引方式打印值(不使用另一个循环并最终打印 m_setScokarr[i][j])。

在 std::Map 中,我们可以使用 it->first 和 it->second 逐条打印记录(Map 是关联容器)

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

我想要的输出类似于在一个 for 循环中使用 std::array 的迭代器

0,1
1,2
2,3
4,5
5,6
6,7
Run Code Online (Sandbox Code Playgroud)

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

Vit*_*meo 9

在 C++11 中:

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

在 C++17 中:

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