float**
매개 변수를 사용하는 함수가 있습니다. 변수의 값이 std::vector<std::vector<float>>
입니다.std :: vector <std :: vector <float>>을 float으로 변환 **
float*[]
임시 할당하지 않고 이러한 변환을 수행 할 수 있습니까?
float**
매개 변수를 사용하는 함수가 있습니다. 변수의 값이 std::vector<std::vector<float>>
입니다.std :: vector <std :: vector <float>>을 float으로 변환 **
float*[]
임시 할당하지 않고 이러한 변환을 수행 할 수 있습니까?
직접적으로는 아니지만 "내부"벡터의 데이터를 복사 할 필요는 없습니다. 대신 각 내부 벡터의 data()
특성에 대한 포인터 배열을 만들 수 있습니다.
float**
에 두 개의 루프가있는 vector<vector<float> >
값을 입력하여 변환해야합니다.
어쨌든 float*
내부를 할당해야합니다.
이 작동합니다 :
std::vector<std::vector<float>> source;
std::vector<float*> target(source.size());
for (int i = 0; i < source.size(); ++i)
target[i] = &*source[i].begin();
을 당신이 내부 std::vector<>
의 복사 할 필요가 없습니다 볼 수 있지만 당신이 바깥 쪽을 다시 작성해야한다. std::vector<>
은 멤버의 선형 저장 (즉, C- 배열과 호환 됨)을 보장하므로 내부 벡터에 대해 작동합니다.
예입니다. 너 뭐 해봤 니? 단순히 메모리를 할당 한 다음 2 for 루프를 사용하고 두 벡터를 반복하는 것입니다. – ApplePie