C++(STL 라 이브 러 리)순서 용기 vector 사용

특징
① 전체적으로 말 하면 가 변 크기 배열.빠 른 무 작위 접근 지원.끝 에 있 는 위치 에 요 소 를 삽입 하거나 삭제 하 는 것 이 느 릴 수 있 습 니 다.
② 요 소 는 연속 적 인 메모리 공간 에 저장 되 어 있 기 때문에 아래 표 시 를 통 해 값 을 빨리 추출 합 니 다.
③ 용기 중간 위치 에 요 소 를 추가 하거나 삭제 하 는 데 시간 이 많이 걸린다.
④ 내부 에서 재배 치 되면 원 vector 와 관련 된 지침,인용,교체 기 는 모두 효력 을 잃 습 니 다.메모리 재배 치 시간 이 오래 걸 립 니 다.
2.헤더 파일,using 성명
  • 헤더 파일:\#include
  • using 성명:using std::vector;
  • 3.초기 화
  • vector  v1; ==>v1 은 빈 vector 입 니 다
  • vector v2(v1); ===>v2 는 v1 의 사본 으로 복사 구조
  • vector v2=v1; ===>동상
  • vector v1(n,val); ===>n 개의 value 를 초기 화 합 니 다
  • vector v1(iter1,iter2); ===>교체 기 iter 1 과 iter 2 가 가리 키 는 구간 내 요 소 를 초기 화 합 니 다
  • vector v1(n); ===>n 개의 요 소 를 초기 화 합 니 다.모든 요 소 는 기본 값(int 는 0,string 은 비어 있 습 니 다.)
  • vector v1{a,b,c...}; ===>원소 a,b,c 로 초기 화 합 니 다
  • vector v1={a,b,c...}; ===>위 와 같다
  • 관련 조작
    1.연산 자
    
    v1==v2;//  v1 v2    
    v1!=v2;//  v1 v2    
    >、>=、<、<= //         
    2.수치 추출
    색인 추출 값:v[0],v[1],v[2]...
    관련 함수
    vector 는 push 를 지원 하지 않 습 니 다.front()와 emplacefront()
    
    v.empty();//      ,     
    v.size();//          
    v.max_size();//       
    
    v.front();//     
    v.back();//     
    v.at(int i);//    i    ,     ,     
    
    v1.swap(v2);// v1 v2    。         
    swap(v1,v2);//  。      
     
    assign(iter1,iter2);//                  
    assign(n,t);//       n t  
    
    v.insert(iter,t);//    iter   t。           
    v.insert(v.end(),10,t);//   v     10   ,      t。                 
    v.insert(v.end(),{"a","b"...});//               v   。                 
    v.insert(v.begin(),v2.end()-2,v2.end());//   v2           v   。                 
      :      ,                (v.insert(v.begin(),v.end()-2,v.end());    )
     
     
    //  insert    ,        lst         (   push_front   )
    vector<string> v;
    auto iter=lst.begin();
    while(cin>> word)
     iter=v.insert(iter,word);//insert       ,          
    
    //vector   pop_front
     
    v.push_back(t);//      t
    v.pop_back();//     
     
    v.earse(iter);//     iter        。               
    v.erase(iter1,iter2);//     iter1 iter2      。                   
     
    v.clear();//    ,       
    
    v.resize(n);//   v     n 。 n<      ,      。 n>      ,            
    v.resize(n,t);//       n t。         
     
    vector<int> v(5,666);
    v.resize(3);//v  3   ,  666
    v.resize(8);;//v  8   , 5   666, 3   0(  )
    v.resize(10,666);//v  10   ,  666
    
    //vector   emplace_front();
    //       ,           ,          
    v.empalce(iter,args);//   v         args  
    v.emplace_back(args);//   v         args  
     
      
    class A{
     string name;int age;
    public:
     A(string name, int age);
    };
    int main()
    {
     vector<A> v;
     v.emplace_back("C  ", 18);//         
     v.emplace(v.begin(),"C++",18);//   v         
    }
    
    v.capacity();//         (       )
    v.reserve(n);//   v    n     (  n<=      ,      )
    6.용기 조작 으로 교체 기,인용,포인터 가 효력 을 잃 습 니 다.
    1.개념:용기 에 요 소 를 추가 하거나 삭제 하면 용기 의 교체 기,인용,포인터 가 효력 을 잃 을 수 있 습 니 다.실 효 된 교체 기,인용,지침 은 더 이상 어떤 요소 도 표시 하지 않 고 사용 하기에 매우 위험 합 니 다.
    2.원소 추가
    4.567917.만약 vector 에 메모리 재분배 가 없다 면.위치 에 삽입 하기 전의 요소 의 교체 기,인용,지침 이 유효 하 며,위치 에 삽입 한 후의 교체 기,인용,지침 은 모두 효력 을 상실 합 니 다4.567917.메모리 재분배 시 모든 교체 기,인용,지침 이 효력 을 상실 합 니 다3.요소 삭제
    요 소 를 삭제 하기 전의 교체 기,인용,포인터 가 유효 하고 그 후의 실효
    7.vector 는 어떻게 증가 합 니까?
    1.개념
    vector 는 가 변 적 이 고 긴 배열 입 니 다.그 중에서 요 소 를 추가 할 때 공간 이 가득 차 면 자동 으로 새로운 공간 을 신청 하고 원래 의 공간 을 방출 하여 원래 공간 을 가리 키 는 지침 을 새로운 공간 으로 가 리 킵 니 다.
    2.방법:vector 성장 은 규칙 적 이 며 공식 적 으로 설명 할 수 있 습 니 다.
  • maxSize=maxSize+((maxSize>>1)>1?(maxSize>>1):1)
  • 도해:바로 1,2,3,4,6,9...에서 차례로 증가 하 는 것 이다

  • C++(STL 라 이브 러 리)의 순서 용기 vector 의 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++순서 용기 vector 내용 은 우리 의 이전 글 이나 아래 의 관련 글 을 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기