>백엔드 개발 >C++ >std::Vector에서 원시 데이터 포인터를 검색하는 방법은 무엇입니까?

std::Vector에서 원시 데이터 포인터를 검색하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-11 17:34:02271검색

How to Retrieve a Raw Data Pointer from a std::vector?

std::Vector에서 원시 데이터 포인터 검색

문제:

다음을 추구합니다. void 포인터를 허용하는 함수 내에서 std::벡터를 char 배열로 사용합니다. 벡터를 직접 전달하거나 시작() 반복자를 통해 벡터를 전달하려고 하면 잘못된 데이터 또는 컴파일러 경고가 발생합니다.

해결책:

표준의 원시 데이터에 액세스하려면 ::벡터, 다음 방법 중 하나를 사용하여 초기 요소의 주소를 얻습니다.

  • &something[0] 또는 &something.front() - 인덱스 0에 있는 요소의 주소를 반환합니다.
  • &*something.begin() - 시작() 반복자가 가리키는 요소의 주소를 반환합니다.

C 11 이상에서는 추가 옵션을 사용할 수 있습니다.

  • &something.data() - 초기 요소의 주소를 반환하여 빈 컨테이너의 경우에도 안전성을 보장합니다.

예:

void process_data(const void *data);

std::vector<char> something;

// Cast the raw data pointer to char* for compatibility.
char *data_ptr = reinterpret_cast<char*>(something.data());
process_data(data_ptr);

위 내용은 std::Vector에서 원시 데이터 포인터를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.