2012-08-23 2 views
-5

1D 벡터 (Vp_cpp)가 있고 2D 벡터 (Vp_2D로 선언 됨)로 변환하고 싶습니다. 그러나 "Out from inner loop"라인에 도달 할 수 없기 때문에 구현이 다소 올바르지 않습니다.C++에서 1D 벡터를 2D로 변환

std::vector<double> Vp_cpp; 
std::vector<std::vector<double> > Vp_2D; 

Vp_2D.resize(N_cpp); 
for (int i = 0; i < N_cpp; ++i) 
    Vp_2D[i].resize(N_cpp); 
for (int j = 0; j < N_cpp; j++) 
    for (int k = 0; k < N_cpp; k++) 
{ 
    cout << "Beginning inner loop" << endl; 
    Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2]; 
    cout << "Out from inner loop" << endl; 
} 

무엇이 잘못되었을 수 있습니까? (루프 내부 i_cppi_cpp2에 보이는 과제가 없기 때문에.) 당신의 루프가 Vp_2D[i_cpp][i_cpp2]의 값을 재설정 유지합니다이 명령을 통과

+0

오류 메시지? 예외? 이걸 실행할 때 무슨 일이 일어난거야? "회선에 연결할 수 없습니다".. "" " – Default

+1

무엇이'i_cpp'와'i_cpp2'입니까? 내부 루프 내부 이외에는 아무 것도 표시되지 않습니다. 선언/정의 또는 지정이 없습니다. – Flexo

+0

'i_cpp'와'i_cpp2'는'j'와'k'가되어야한다고 생각합니다. – tehlexx

답변

2

이 줄은 나에게 잘못 보인다

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2]; 

내가 작성합니다 i를 사용

Vp_2D[j][k] = Vp_cpp[i++]; 

는 이상 Vp_cpp 반복. for (int j, ... 루프 전에 0으로 초기화해야합니다.

1

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2];마다

당신은 Vp_2D[j][k]로 변경해야합니다.

+0

"제 생각에"나는 절대로 용납 할 수없는 답이라고 생각합니다. "나는 생각한다"는 주석으로 추가되어야한다 (또는 재 작성되어야한다). – Default

+1

@Default : -이 질문에 어떻게 대답합니까? "이 코드의 문제는 무엇입니까? char * x = malloc (10)'". 코멘트에 ?? ** malloc 앞에 ** 추가 (char *) ** !!! ????? – perilbrain

+0

당신이 물어 보는 질문이나 물음표가 여러 개인 이유가 확실하지 않습니다. 내 의견이 명확하지 않습니까? 나는 다음과 같은 라인에서 주목하고 있었다 : * 나는 그것이되어야한다고 생각한다. *, 나에 따르면 **되어야한다 "It should be ...". 당신이 대답을 모른다면 (나는 "생각한다"에 의해 함축되어있다.) 나는 그것이 대답으로 놓여 져야한다고 생각하지 않는다. 내가 뭘보고 있는지 보여? 그리고 당신의 질문에 대한 답은 정확합니다. "** 나는 malloc 앞에 ** (char *)를 추가해야한다고 생각한다. ** – Default

2

변화

Vp_2D[j][k] = Vp_cpp[(j * N_cpp) + k]; 

에 선

Vp_2D[i_cpp][i_cpp2] = Vp_cpp[i_cpp2]; 

그렇지 않으면 당신은 시대의 하나 개의 값 제비를 다시 할당 할 수 있습니다.