我遇到了这条线的问题
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}}
谢谢
答案 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
未在任何地方声明。