일부 코드에서 boost :: multi_array 인라인을 초기화하고 싶습니다. 하지만 boost :: multi_array 이니셜 라이저 목록에서 초기화를 지원한다고 생각하지 않습니다. 여기에 지금까지이 작업은 다음과 같습니다초기화 도구 목록에서 boost :: multi_array를 채우는 가장 좋은 방법은 무엇입니까?
// First create a primitive array, which can be directly initialized
uint8_t field_primitive[4][8] = {
{ 1,1,1,1,1,1,1,1 },
{ 1,2,1,2,1,2,1,2 },
{ 1,1,2,2,2,2,2,2 },
{ 1,2,2,2,2,2,2,2 }
};
// Create the boost::multi_array I actually want to use
boost::multi_array<uint8_t, 2> field(boost::extents[4][8]);
// Compact but yucky approach to copying the primitive array contents into the multi_array.
memcpy(field.data(), field_primitive, field.num_elements() * sizeof(uint8_t));
내가 콤팩트 중괄호 intializer 목록을 사용하여 매트릭스의 내용을 표현할 수있는 것을 좋아한다. 하지만 "memcpy"가 마음에 들지 않아 원시 배열을 사용하는 것을 좋아하지 않습니다. 코드에서 값의 읽기 가능한 인라인 집합에서 boost :: multi_array를 채울 수있는 더 좋은 방법이 있습니까?
아마도 여기 뭔가가 도움이 될까요? http://stackoverflow.com/questions/8824247/one-line-initialiser-for-boost-multiarray – Tas
thecppboostlibraries의 다음 링크는'origin()'과'memcpy'를 사용한 예제입니다 : https://theboostcpplibraries.com /boost.multiarray –
@ 특정 DIMENSIONS가있는 다중 배열을 만드는 것과 관련하여 연결된 질문이 있습니다. 내 질문에 대한 특정 내용으로 multi_array 만드는 방법에 대한 것입니다. –