У меня есть матрица смежности, с которой я пытаюсь работать (не в теории графов, а в вычислительной физике), и я собрал воедино некоторые вещи, которые я копил по всему Интернету в C ++, что и является остальной частью проектанаписано в. Я определил произвольную матрицу смежности (9x9), и я пытаюсь получить ненулевые элементы каждой строки в вектор.Я получаю следующий результат, 1 1 1 1 1 1 6 1 6 1 6, когда я запускаю этот код:
int x[9][9] =
{{0,1,0,0,0,0,1,0,0},{1,0,0,1,0,0,0,0,1},{0,0,0,0,1,1,0,0,0},
{0,1,0,0,0,0,0,0,0},{0,0,1,0,0,0,0,0,0},{0,0,1,0,0,0,0,0,0},
{1,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,1,0,0},{0,1,0,0,0,0,0,0,0}};
{
vector<int> col;
for (int j = 0; j < 9; j++)
{
if (x[0][j] == 1)
{
col.push_back(j);
}
else{}
std::copy(col.begin(), col.end(),
std::ostream_iterator<int>(std::cout, " "));
Я ожидаю получить 1 6, и хотя это только два целых числа вПолученный результат, я запутался, почему это не просто «1 6».Есть ли какая-либо ошибка, которую я здесь пропускаю, или какой-либо другой способ получить желаемый результат ненулевых элементов из составляющих массивов?