C++ 벡터

3971 단어 cpp
벡터는 표준 배열과 유사하지만 동적일 수 있습니다. 즉, 고정된 크기가 아니며 필요에 따라 크기를 조정할 수 있습니다. 이는 표준 템플릿 라이브러리(STL)의 일부이며 #include <vector> 가 있는 파일에 포함되어야 합니다.

일반 배열과 마찬가지로 데이터 유형과 이름을 지정합니다. 원하는 경우 벡터를 초기화할 크기를 지정할 수 있으며 벡터의 각 인덱스를 초기화할 항목을 지정할 수도 있습니다. 다른 벡터의 내용으로 벡터를 초기화할 수도 있습니다.

std::vector<int> numsA;
std::vector<int> numsB(5);
std::vector<int> numsC(5, 9);
std::vector<int> numsD(numsC);

numsA는 크기가 0인 벡터입니다. numsB는 크기가 5인 벡터이며 각 인덱스는 값 0으로 초기화됩니다. numsC는 크기가 5인 벡터이고 각 인덱스는 값 9로 초기화됩니다. 마지막으로, numsDnumsC 의 내용 복사본으로 초기화되어 9로 채워진 크기 5의 벡터가 됩니다.

시장 조작



인덱스에 저장된 요소를 검색하고 해당 인덱스의 값을 변경할 수 있습니다.
  • v.at(index) 지정된 인덱스의 요소를 반환합니다
  • .
  • v[index] 지정된 인덱스의 요소를 반환합니다
  • .
  • v.front() 첫 번째 요소를 반환합니다
  • .
  • v.back() 마지막 요소를 반환합니다
  • .
    front()back() 벡터가 비어 있는지 확인하지 마십시오. 그렇다면 코드가 컴파일되지만 중지되고 EXC_BAD_ACCESS 오류가 발생합니다. 또한 생성한 범위를 벗어난 인덱스로 out_of_range를 사용하려고 하면 at() 오류가 발생합니다.

    // create a char array of size 4
    std::vector<char> alpha(4);
    
    // fill values at specific indices
    alpha.front() = 'A';
    alpha[1] = 'B';
    alpha.at(2) = 'C';
    alpha.back() = 'D';
    
    // display values at specific indices
    std::cout << alpha.front() << "\n";
    std::cout << alpha[1] << "\n";
    std::cout << alpha.at(2) << "\n";
    std::cout << alpha.back() << "\n";
    
    // output
    A
    B
    C
    D
    


    멤버 함수



    사용할 수 있는 클래스 벡터에는 많은 기능이 있습니다.
  • v.capacity() 더 많은 공간을 재할당하지 않고도 벡터에 저장할 수 있는 요소의 최대 수를 반환합니다
  • .
  • v.empty() 벡터가 비어 있으면 true(1)를 반환합니다. 거짓(0) 그렇지 않은 경우
  • v.size() 벡터의 크기를 반환합니다
  • .
  • v.max_size() 벡터에 삽입할 수 있는 최대 요소 수를 반환합니다.

  • std::vector<char> alpha(4);
    
    std::cout << alpha.empty() << "\n";
    std::cout << alpha.capacity() << "\n";
    std::cout << alpha.size() << "\n";
    std::cout << alpha.max_size() << "\n";
    
    // output
    0
    4
    4
    9223372036854775807
    


  • v.clear() 벡터에서 모든 요소를 ​​삭제합니다.

  • // initialize 4 elements to 'A'
    std::vector<char> alpha(4, 'A');
    
    std::cout << alpha.empty() << "\n";
    alpha.clear();
    std::cout << alpha.empty() << "\n";
    
    // output
    0
    1
    


  • v.push_back() 요소를 벡터의 끝으로 푸시합니다
  • .
  • v.pop_back() 벡터 끝에 있는 요소를 제거합니다.

  • // create empty vector
    std::vector<char> alpha;
    
    // push elements into vector
    alpha.push_back('A');
    alpha.push_back('B');
    alpha.push_back('C');
    
    alpha.pop_back(); // remove last element 'C'
    
    // loop through elements of vector and display values
    for (int i = 0; i < alpha.size(); i++)
      std::cout << i << ": " << alpha[i] << std::endl;
    
    // output
    0: A
    1: B
    


    더 많은 멤버 함수를 찾을 수 있습니다here.

    불리



    벡터는 동적이기 때문에 더 많은 요소를 추가할 수 있도록 포함하는 요소에 필요한 것보다 더 많은 공간을 차지할 수 있습니다. 더 많은 요소에 맞게 크기를 조정해야 하는 경우 메모리를 재할당해야 합니다. 따라서 벡터는 배열에 비해 더 많은 메모리를 소비하고 성능 오버헤드가 있습니다.

    추가 읽을거리/참고문헌


  • C++ 프로그래밍: 데이터 구조를 포함한 프로그램 설계 8판. D.S. Malik
  • Cplusplus.com - std::vector
  • 좋은 웹페이지 즐겨찾기