C++Primer 노트 순서 용기 사용 설명

5269 단어 C++순차 용기
순서 용 기 는 단일 유형의 요 소 를 모 아 용기 로 만 든 다음 위치 에 따라 이 요 소 를 저장 하고 방문 하 는 것 이 순서 용기 입 니 다.표준 라 이브 러 리 는 세 가지 유형 을 정의 합 니 다.vector(빠 른 랜 덤 접근 지원),list(빠 른 삽입,삭제 지원),deque(양 단 대기 열)용 기 는 소량의 조작 만 정의 합 니 다.대부분의 추가 작업 은 알고리즘 라 이브 러 리 에서 제공 합 니 다.용기 내 요소 의 유형 제약;1.요소 유형 은 할당 연산 을 지원 해 야 합 니 다.2.요소 형식의 대상 은 복사 할 수 있어 야 합 니 다.이것 은 용기 원소 유형의 최저 요구 이 며,다른 특수 요 구 를 지원 하려 면 반드시 관련 성질 을 갖 추어 야 한다.
용기 의 용기 vectorlines 를 정의 할 수 있 습 니 다./">"가운데 빈 칸 을 사용 해 야 합 니 다.그렇지 않 으 면 변이 오류 가 발생 할 수 있 습 니 다.
교체 기 연산:
관계 조작 자 는 vector 와 deque 용기 에 만 적 용 됩 니 다.요소 위치 에 따라 지정 한 용기 요 소 를 직접 방문 할 수 있 습 니 다.한편,list 용기 의 교체 기 는 산술 연산(덧셈 또는 뺄셈)을 지원 하지 않 을 뿐만 아니 라 관계 연산(<=,<,>=,>)도 지원 하지 않 습 니 다.이것 은 전치 와 후기의 자체 증가,자체 감소 연산 과 같은(부 등)연산 만 제공 합 니 다.
교체 기 범위:
c++는 교체 기 범 위 를 표시 하 는 교체 기 를 사용 합 니 다.보통 first 와 last 또는 beg 와 end 라 고 부 릅 니 다.이 범위 내의 요 소 는 교체 기 first 가 가리 키 는 요소 와 first 부터 교체 기 last 가 가리 키 는 위치 까지 의 모든 요 소 를 포함 하 며,이러한 요소 범 위 는 왼쪽 폐쇄 구간[first,last)이 라 고 합 니 다.
순서 용기 조작:
용기 에 요소 추가 하기;용기 에서 요소 삭제 하기;용기 크기 설정 하기;용기 안의 첫 번 째 요소 와 마지막 요 소 를 가 져 옵 니 다.begin(),end(),rbegin(),rend()네 가지 조작 에 대해 모두 const 버 전이 있 습 니 다.용기 에 const 를 넣 으 면 되 돌아 오 는 형식 에 const 를 추가 합 니 다.접두사.c.push_back(t)용기 c 의 끝 에 t 의 요 소 를 추가 하고 void 형식 을 되 돌려 줍 니 다.c.push_front(t)는 용기 c 의 전단 에 t 의 요 소 를 추가 하고 void 형식 을 되 돌려 줍 니 다.그러나 list 와 deque 만 이런 성질 을 가지 고 있다.4567913)용기 에 지정 한 위치 에 요 소 를 추가 합 니 다.insert 함 수 를 사용 합 니 다.교체 기 는 용기 끝 을 초과 한 다음 위 치 를 가리 킬 수 있 기 때문에 존재 하지 않 는 요소 가 없 기 때문에 insert 함 수 는 그 위 치 를 가리 키 기 전에 요 소 를 삽입 하 는 것 이 아 닙 니 다.mylist.insert(iter,element);

//
vector<int>::reverse_iterator iterReverse=vect.rbegin();// while(iterReverse!=vect.rend())
{
    cout<<*iterReverse<<endl;
    iterReverse++;
}
vector<int>::iterator iter = vect.begin();//
while(iter!=vect.end())
{
    cout<<*iter<<endl;
    iter++;
}
요 소 를 삽입 합 니 다.

// , list
vector<int>::iterator middle=vectCpy.begin()+vect.size()/2;
vectCpy.insert(middle,1001);//  
주의해 야 할 것 은 요 소 를 추가 하면 일부 또는 모든 교체 기 가 효력 을 잃 을 수 있 습 니 다.모든 교체 기 가 효력 을 잃 는 다 고 가정 하 는 것 이 가장 안전 한 방법 입 니 다.end 작업 이 되 돌아 오 는 교체 기 를 저장 하지 마 십시오.end 교체 기 를 저장 하지 않도록 매번 삽입 연산 을 마치 고 end 교체 기 값 을 다시 계산 할 수 있 습 니 다.
관건 적 인 개념:용기 요 소 는 모두 사본 이 용기 에 요 소 를 추가 할 때 시스템 은 요소 값 을 용기 에 복사 합 니 다.새 용 기 를 초기 화 할 때 새 용기 에 저 장 된 원본 요소 의 사본 과 유사 합 니 다.이 복 제 된 원시 값 은 새 용기 의 요소 와 각각 상관 이 없 으 며,이후 용기 안의 요소 값 이 변화 할 때 복 제 된 원 치 는 영향 을 받 지 않 으 며,반대로 도 마찬가지 입 니 다.
용기 비교:
비교 용 기 는 같은 용기 유형 을 가 져 야 하고 그 요소 유형 도 같 아야 한다.용기 의 비교 식 은 용기 내 요소 에 대한 비 교 를 바탕 으로 한다.두 용 기 는 같은 길이 와 모든 요소 가 같 으 면 이 두 용 기 는 같다.두 용기 의 길이 가 같 지 않 지만 짧 은 용기 의 모든 요 소 는 긴 용기 에 대응 하 는 요소 와 같 으 면 짧 은 용기 가 다른 용기 보다 작다 고 한다.만약 두 용기 가 모두 상대방 의 초기 하위 서열 이 라면 그들의 비교 결 과 는 비교 한 첫 번 째 서로 다른 요소 에 달 려 있다.

vectCpy.insert(vectCpy.begin(),10,9);// 10 9
int num[3]={555,666,777};
vectCpy.insert(vectCpy.end(),num,num+3);// vectCpy num
vectCpy.insert(vectCpy.end(),vect.begin(),vect.end());// vectCpy
용기 크기 의 조작:
용기 형식 은 용기 에 포 함 된 요소 의 개 수 를 바 꾸 기 위해 resize 함 수 를 제공 합 니 다.현재 용기 의 길이 가 새로운 길이 보다 크 면 이 용기 뒷부분 의 요 소 는 삭 제 됩 니 다.현재 용기 의 길이 가 새로운 길이 보다 작 으 면 시스템 은 이 용기 뒷부분 에 새로운 요 소 를 추가 합 니 다.resize 작업 은 교체 기 를 무효 화 할 수 있 습 니 다.예:

vector<int> vect;
vect.push_back(1);
vect.push_back(2);
vect.push_back(3);
vector<int> vectCpy(vect);
if(vectCpy==vect) cout<<"Equal"<<endl;
else cout<<"Not Equal"<<endl;
접근 요소:
용기 가 비어 있 지 않 으 면 용기 형식의 front 와 back 구성원 은 용기 안의 첫 번 째 또는 마지막 요소 의 참조

list<int> ilist(10,2);//10 , 2
ilist.resize(15);// , 5 , 0
ilist.resize(25,-1);// , 10 , -1
ilist.resize(5);// ilist 20
에서 요 소 를 삭제 합 니 다.
  pop_front 와 popback 함 수 는 용기 안의 첫 번 째 요소 와 마지막 요 소 를 삭제 하 는 데 사 용 됩 니 다.
하나 또는 한 단락 의 요 소 를 삭제 하 는 것 이 더 일반적인 방법 은 erase 로 작업 하 는 것 입 니 다.두 가지 버 전이 있 습 니 다.하나의 교체 기 가 가리 키 는 하나의 요 소 를 삭제 하거나 한 쌍 의 교체 기 에 표 시 된 요 소 를 삭제 합 니 다.erase 는 삭 제 된 요소 나 요소 세그먼트 뒤의 요 소 를 가리 키 는 교체 기 를 되 돌려 줍 니 다.보통 용기 에서 삭제 할 요 소 를 찾 아야 erase 작업 을 사용 합 니 다.지정 한 요 소 를 찾 는 가장 간단 한 방법 은 표준 라 이브 러 리 의 find 방법 을 사용 하 는 것 입 니 다.헤더 파일 algorithm.h

int &ref=vect.front();//front back
ref=1000001;// ,vect
cout<<vect[0]<<" "<<vect.at(1)<<endl;// vector deque, , outOfRange
를 포함 하여 용기 안의 모든 요 소 를 삭제 해 야 합 니 다:mylist.clear()또는 mylist.erase(mylist.begin(),mylist.end();
용기 선택:
vector 와 deque 용 기 는 요소 에 대한 빠 른 무 작위 접근 을 제공 하지만,용기 의 임 의 위치 에 요 소 를 삽입 하거나 삭제 하 는 것 이 용기 꼬리 에 요 소 를 삽입 하고 삭제 하 는 것 보다 비용 이 더 많이 듭 니 다.list 형식 은 모든 위치 에서 빠르게 삽입 하고 삭제 할 수 있 지만,지불 하 는 대 가 는 요소 의 무 작위 접근 비용 이 비교적 크다 는 것 이다.그 이 유 는 내부 에서 실 현 된 데이터 구조 에서 하 나 는 메모리 에서 순서 적 인 주 소 를 나 누 는 것 이 고 다른 하 나 는 링크 와 유사 한 방식 으로 무 작위 주소 로 분배 되 기 때문에 성질 이 다 르 기 때문이다.

좋은 웹페이지 즐겨찾기