从C ++中的函数调用时,访问矩阵中的元素

时间:2015-02-19 18:35:01

标签: c++ function

我遇到了这条线的问题

for(int &vecino: lista_vecinos[hormiga])

我希望hormiga lista_vecinos列中的#include <iostream> #include <iomanip> #include <stdio.h> #include <fstream> #include <stdlib.h> #include <math.h> #include <time.h> // libreria para el uso de time() #include <random> using namespace std; int n=30; //número de nodos o ciudades int** vecinos(int, int) { int** lista_vecinos = new int*[n]; for(int i = 0; i < n; i++) { lista_vecinos[i] = new int[n]; for(int j = 0; j < n; j++){ lista_vecinos[i][j] = (j); } } return lista_vecinos; } int main() { int** lista_vecinos = vecinos(n,n); //Call function for (int &vecino: lista_vecinos[hormiga]) //For each element in row "hormiga" from LIsta_vecinos { r1+=probabilidad_acumulada[hormiga][vecino]= r1; } } return 0; 列中的每个元素都可用。

这是我的代码。

{{1}}

谢谢

1 个答案:

答案 0 :(得分:0)

指针不是可以迭代的对象。

vecinos返回int**lista_vecinos[hormiga]的类型为int*int*不是for(:)循环可以迭代的东西,因为没有办法确定它何时结束。

当您不理解原始数组时,请停止使用它们。将std::vector<int>用于一维数组,将std::vector<std::vector<int>>用于二维(锯齿状)数组。

std::vector<std::vector<int>> vecinos(int a, int b)
{
  std::vector<std::vector<int>> retval;
  retval.resize(a);
  for( std::vector<int>& v:retval ) {
    v.resize(b);
    for( int i = 0; i < b; ++i )
      v[i] = i;
  }
  return retval;
}

请注意,您的代码不会因其他无关原因而编译,例如hormiga未在任何地方声明。