std::Vector 원시 데이터 포인터 검색
프로그래밍에서는 원시 포인터가 필요한 함수에 데이터를 전달해야 하는 경우가 많습니다. 데이터 그 자체. 이 작업은 std::Vector와 같은 동적 컨테이너로 작업할 때 어려울 수 있습니다.
const void 포인터를 입력으로 사용하는 process_data() 함수가 있는 시나리오를 생각해 보세요. 이전에는 단순히 참조로 char 배열을 전달할 수 있었습니다.
char something[] = "my data here"; process_data(something);
그러나 이 논리를 std::벡터
vector<char> something; process_data(something);
또는 시작 반복자의 주소를 취하는 경우:
process_data(&something.begin());
무의미한 데이터 또는 컴파일러 경고가 발생합니다.
문제는 표준 내의 실제 데이터에 대한 포인터를 얻는 데 있습니다. ::벡터. 이를 위해 다음과 같은 몇 가지 옵션을 사용할 수 있습니다.
1. 첫 번째 요소에 액세스:
벡터에서 첫 번째 요소의 주소를 검색할 수 있습니다.
process_data(&something[0]); // or &something.front()
2. data() 멤버 함수 사용(C 11 이상):
C 11에서 std::Vector는 data() 멤버 함수를 도입했습니다.
process_data(something.data());
이 함수 벡터가 비어 있는 경우에도 호출하는 것이 안전하므로 선호됩니다.
참고: &something은 데이터가 아닌 벡터 개체 자체의 주소를 제공합니다. 따라서 이러한 목적으로 사용해서는 안됩니다.
위 내용은 std::Vector에서 원시 데이터 포인터를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!