在 std::array 中迭代记录
Iterate records in std::array
我正在创建 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中我们可以使用it->first和it->second逐条记录打印(Map是关联容器)
尝试以不同的方式打印,例如新的索引增量等。但没有任何进展。
我想要的输出就像在一个 for 循环中使用 std::array 的迭代器一样
0,1
1,2
2,3
4,5
5,6
6,7
想知道我们是否可以使用 std::array(序列容器)来明智地打印记录,类似于我们用于 std::map。
在 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';
}
我正在创建 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中我们可以使用it->first和it->second逐条记录打印(Map是关联容器)
尝试以不同的方式打印,例如新的索引增量等。但没有任何进展。
我想要的输出就像在一个 for 循环中使用 std::array 的迭代器一样
0,1
1,2
2,3
4,5
5,6
6,7
想知道我们是否可以使用 std::array(序列容器)来明智地打印记录,类似于我们用于 std::map。
在 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';
}