, 벡터, 문자열 ++ C의 배열

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/oqqWang1234567/article/details/81809942

        C ++ 언어는 C ++ 배열은 C 언어 스타일의 전통적인 배열을 사용할 수 있도록, C 언어와 호환됩니다. 그러나 많은 시간에 C 언어 형식의 배열은 사용하기 매우 쉬운 일이 아니다. C ++에서 대신 벡터로 이용 될 수있다.

         이 문서 벡터, 문자열과 문자 배열 사이의 관계 만 고려한다.

          당신이 문자열을 사용하는 경우, 문자열을 사용하는 것이 좋습니다,하지만 당신은 단지 배열을 고려한다면, 당신은 같은 문자 배열과 문자열 대신 벡터를 사용한다, 결국 동일하지 않습니다.

          벡터에 교환 문자 배열 :

          1 벡터로 배열

float arrHeight[] = { 1.68,1.72,1.83,2.05,2.35,1.78,2.1,1.96 };  
vector<float> vecHeight(arrHeight, arrHeight+sizeof(arrHeight)/sizeof(float));  

         2 벡터 어레이 전사 
         벡터 데이터가 연속적인 내부 저장 공간에 저장되어 있기 때문에, 벡터 형질 어레이 사실은 첫 번째 데이터 및 어드레스 데이터의 벡터 길이를 얻기 위해 필요하다. 유일한 매개 변수 전달이 아무런 조작을하지 않으면, 주소를 직접 전달 될 수있는 경우 데이터를 복사 할 경우, 당신은 메모리 복사 기능 "방어 적이기"빌릴 수 있습니다. 예를 들면 :

float *buffer = new float[sizeof(arrHeight)];  
if (!vecHeight.empty())  
{  
    memcpy(buffer, &vecHeight[0], vecHeight.size()*sizeof(float));  
}  

3. 응용 프로그램 추천

1 인 구현 동적 배열뿐만 벡터 : 메모리 블록, 충분한 사용감 메모리의 큰 블록의 재분배가 사전 - 할당하고 데이터를 복사 할 신규 블록 메모리에 자동 종래.

구현은 저장 될 데이터의 길이를 알고있는 경우, 따라서 효율성을 위해, 충분한 메모리 크기 조정 기능을 열어 후속 메모리 복사를 방지하기 위해 사용될 수있다.

참조 https://blog.csdn.net/ei1990/article/details/80175610를

추천

출처blog.csdn.net/oqqWang1234567/article/details/81809942