2014-02-18 1 views
0

2 차원 객체 벡터가 있는데이를 섞기를 원합니다. 이 구문은 무엇입니까? 당신이 그런random_shuffle을 사용하여 2D 배열을 셔플하는 방법 C++

b[i * m + j] = a[i][j]; 

:

class node{ 
    public: 
     string hex_type = "E";// empty to start 
     int Xcoordinate; 
     int Ycoordinate; 
     vector<reference_wrapper<node>> neighbors; 


    }; 
nodes = vector<vector<node> >(size, vector <node>(size));//filled elsewhere 
random_shuffle(&nodes[0][0], &nodes[size-1][size-1]); 

이 오류를 발생은 액세스

+0

배열로 시작하자. ** 실제 ** 2D 배열입니까? 그리고 일부는 포인터 배열을 넘어서지 않았습니까? 그렇다면 두 번째 시도로 끝내십시오. – WhozCraig

+0

그것은 실제 2D 배열의 객체입니다. 포인터가 아닙니다. – dkimmel7

+0

두 번째 시도의 문제점은 무엇입니까? – mattnewport

답변

0

을 읽는 위반하면 2 차원 배열 anxm이있는 경우,이 같은 1 차원 배열 bnxm에 넣을 수있다 배열 b와 사용자 역변환을 섞을 수있다

a[i/m][i % m] = b[i];