vector<int> v 라는 객체가 있을때 int* 를 받는 함수에 넘기는 방법은 &v[0] 을 사용하면 된다.
vector는 연속된 메모리로 컨테이너를 관리하므로 저렇게 넘기면 배열을 사용하는 C언어 함수에서도 문제될것이 없다.(반복자 begin을 사용하는 경우를 생각해 볼수 있지만 반복자는 엄연히 반복자객체이지 배열의 시작포인터를 의미하지는 않는다. vector에서 이 둘이 같은것을 의미할 지라도 두개의 개념은 분리해서 사용하는것이 옳다.)
string 의 경우는 구현이 연속된 메모리로 규정되있지 않기때문에 위의 방법을 사용할수가 없다. 대신 std::string 의 맴버함수로 c_str() 이 있으며 이 함수가 NULL문자로 끝나는 문자열포인터를 리턴한다.
주의사항
|