STL 순서 용기 기본 동작 및 대기 열 사용법
용기 부분 은 주로 헤더 파일 < vector >, < list >, < deque >, < set >, < map >, < stack > 과 < queue > 로 구성 된다.
용기 (container) 는 특정 유형의 대상 의 집합 이다.순서 용 기 는 프로그래머 에 게 요소 저장 과 접근 순 서 를 제어 하 는 능력 을 제공 합 니 다.이런 순 서 는 원소 의 값 에 의존 하지 않 고 원소 가 용기 에 들 어 갈 때의 위치 와 대응한다.순서 용 기 는 vector, queue, list, array, string 등 몇 가 지 를 포함한다.
고정 크기 의 array 를 제외 하고 다른 용 기 는 효율 적 이 고 유연 한 메모리 관 리 를 제공 합 니 다.우 리 는 요 소 를 추가 하고 삭제 하 며 용기 의 크기 를 확장 하고 수축 할 수 있다.용기 에 요 소 를 저장 하 는 전략 은 용기 작업 의 효율 에 고유 하고 때로는 중대 한 영향 을 미친다.어떤 경우 에는 저장 정책 이 특정 용기 가 특정 조작 을 지원 하 는 지 에 도 영향 을 줄 수 있다.
예 를 들 어 string 과 vector 는 요 소 를 연속 적 인 메모리 공간 에 저장 합 니 다. 요 소 는 연속 적 으로 저장 되 기 때문에 요소 의 아래 표 에서 주 소 를 계산 하 는 것 이 매우 빠 릅 니 다.그러나 이 두 용기 의 중간 위치 에 요 소 를 추가 하거나 삭제 하 는 데 시간 이 많이 걸린다.한 번 에 삽입 하거나 삭제 한 후에 연속 저장 소 를 유지 하기 위해 서 는 위치 에 있 는 모든 요 소 를 이동 / 삽입 / 삭제 해 야 합 니 다.그리고 원 소 를 추가 하려 면 추가 저장 공간 이 필요 할 수도 있다.이런 상황 에서 모든 요 소 는 반드시 새로운 저장 공간 으로 이동 해 야 한다.
list 용기 의 디자인 목적 은 용기 의 모든 위 치 를 추가 하고 삭제 하 는 것 입 니 다.대가 로 이 두 용 기 는 요소 의 무 작위 접근 을 지원 하지 않 습 니 다.하나의 요소 에 접근 하기 위해 서 우 리 는 용기 전 체 를 옮 겨 다 닐 수 밖 에 없다.그리고 벡터, queue, array 에 비해 이 두 용기 의 추가 메모리 도 크다.
quue 는 더욱 복잡 한 데이터 구조 이다.string 과 vector 와 유사 합 니 다. queue 는 빠 른 무 작위 접근 을 지원 합 니 다.string 과 vector 와 마찬가지 로 deque 중간 위치 에 요 소 를 추가 하거나 삭제 하 는 대가 (가능) 가 높 습 니 다.하지만 deque 양 끝 에서 요 소 를 삭제 하거나 추가 하 는 것 은 빠 릅 니 다.
array 는 내 장 된 배열 이 아 닙 니 다. 내 장 된 배열 에 비해 array 는 더욱 안전 하고 사용 하기 쉬 운 배열 형식 입 니 다.내 장 된 배열 과 유사 하 며, array 대상 의 크기 는 고정 되 어 있 습 니 다.따라서 array 는 요 소 를 추가 하고 삭제 하 며 용기 크기 를 바 꾸 는 작업 을 지원 하지 않 습 니 다.
대기 열 조작
자세 한 용법: queue 의 변 수 를 정의 합 니 다. queue < Type > que 가 빈 범례 인지 확인 합 니 다. que.empty() 그렇다면 1 로 돌아 가 는 것 이지 0 으로 돌아 가 는 것 이 아니다.기 존 원소 뒤에 원소 추가 (파티 에 입장) que. push () 기 존 요소 의 개수 첫 번 째 요소 보이 기 마지막 요소 보이 기 que. back () 첫 번 째 요소 지우 기 (파티 나 가기) que.pop()
예 를 들 어:
<pre class="cpp" name="code">#include <cstdlib>
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> myQ;
cout<< " queue empty? "<< myQ.empty() << endl;
cout << "push 5, push 6, push 7" << endl;
myQ.push(5);
myQ.push(6);
myQ.push(7);
cout << " queue ? " << myQ.size() << endl;
cout << " queue front ? " << myQ.front() << endl;
cout << " queue rear ? " << myQ.back() << endl;
cout << "pop" << endl; myQ.pop();
cout << " queue ? " << myQ.size() << endl;
cout << " queue front ? " << myQ.front() << endl;
cout << " queue rear ? " << myQ.back() << endl;
return 0;
}
대열 에 대한 지식;
quue 를 사용 하기 전에 구조 함수 의 한 대기 열 대상 을 이용 해 야 요소 의 입단, 출 대, 팀 의 첫 번 째 와 팀 의 끝 등 조작 을 할 수 있 습 니 다.
(1)、queue() queue
(2), queue (const queue &) 복제 구조 함수
예 를 들 어 한 줄 코드 로 quue 대상 q1 을 이용 하여 양 방향 링크 를 바 텀 용기 로 하 는 quue 대상 q2 를 만 듭 니 다.
queue
queue
(3), 원소 입 대 함 수 는: push (), 예 를 들 어 q. push (3) 로 3 을 입 대 했 습 니 다. 대기 열의 크기 가 미리 설정 되 지 않도록 주의 하 십시오.
(4), 요소 출력 함수: pop () 예: q. pop ()
(5), 맞 춤 형 요소 함수: front ()
(6) 、 취 대 꼬리 요소 함 수 는: back ()
(7) 판단 대공 함수: empty ()
(8), 대기 열의 크기 함 수 는: size () 가 대기 열의 현재 요소 의 개 수 를 되 돌려 줍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.