2010-11-27 8 views
2

데이터 배열을 가리키는 원시 포인터가 있습니다. STL 컨테이너 의미 (예 : std :: vector)가있는 컨테이너에이 포인터를 래핑하고 싶습니다. STL에는 이것을 허용하는 기능이 있습니까?RAW 포인터 컨테이너 래퍼

예컨대

class my_class 
{ 
public: 

    std::some_container<char> get_data() { return std::some_container(my_data, my_data_size);} 

private: 
    char* my_data; 
    size_t my_data_size; 
}; 

편집 :

I 메모리가 외부 API에 의해 할당 직접하기 때문에 표준 : : 벡터를 사용할 수 없습니다.

답변

5

STL하지 않는, 부스트 수행합니다

boost::iterator_range<char*> get_data() { 
    return boost::iterator_range<char*>(my_data, my_data+my_data_size); 
} 
1

아마 std::vector을 맞춤 메모리 "할당 자"와 함께 사용하면 가능하지만 나에게 좋은 생각처럼 들리지는 않습니다.

코드를 작성하지 않고도이 문제를 해결할 수있는 방법이 없으므로이 시나리오를 위해 자신 만의 STL과 유사한 컨테이너를 작성하는 것이 좋습니다 (또는 더 좋은 방법은 오픈 소스를 찾는 것입니다). !).

+0

내가 말을해야,이 * * 잠재적으로 좋은 아이디어 같은 소리 않습니다. 이미 CUDA 공유 메모리로이 작업을 성공적으로 마쳤습니다. 사실, 이것이 갈 길입니다. –