나는CArray를 기대하는 MFC 함수에 std :: vector를 전달할 수 있습니까?
std::vector<double> vecArr
가 어떻게이 기능
BOOL AddData (const CArray<double,double>& arrValue)
에 전달할 수 있나요?
발언이 할 수없는 것을 제안, 그리고 내가 먼저 CArray
객체에 std::vector
개체를 변환 것을 제안했다. 그러나 그것은 시간면에서 매우 비쌉니다. 7 초를 측정하고 7 밀리 초를 측정했습니다.
// Copy vector v1 to v2 (very fast)
vector<double> v1;
v1.resize(1000000); // 1 Mio elements
vector<double> v2(v1); // ~7ms
// Copy vector v1 to CArray a1 (very slow)
CArray<double, double> a1;
a1.SetSize(v1.size()); // Reserve 1 Mio elements
vector<double>::iterator it = v1.begin();
while (it != v1.end()) // ~7sec ! :((
arr.Add(*it++);` `
이 솔루션의 성능을 향상시킬 수있는 방법이 있습니까?
간편함 -'AddData'의 매개 변수를'std :: vector'으로 변경하고 MFC 컨테이너 클래스를 사용하여 드롭합니다. –
PaulMcKenzie
아니면, 당신은'CArray'를 생성하고 모든 요소를 복사 한 다음'AddData' 함수에 넘길 수 있습니다. –
@PaulMcKenzie 정확하게 이해하지 못합니다. 아쉽게도 AddData() 시그니처를 변경할 수 없습니다. –